C++ list容器-53-链表大小操作和插入删除操作
这篇接着前面的list容器的基本概念之后,这里继续学习list容器的常用API。先学习list的大小相关操作,也就是元素个数,判断是否为空,重置大小。然后学习list容器的插入和删除,插入是重点,至少有头尾插入和中间任意元素位置插入。
1.list容器大小操作
函数原型
这几个api,我们前面学习其他容器都接触过。下面使用简单代码来测试下
#include <iostream>
#include <string>
#include <list>
using namespace std;
void printList(const list<int>& l)
{
for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
// list 大小
list<int> li; // 默认构造函数
// 添加数据
li.push_back(10);
li.push_back(20);
li.push_back(30);
li.push_back(40);
li.push_back(50);
printList(li);
cout << "current size:" << li.size() << endl;
// 判断是否为空
cout << "is Empty? " << li.empty() << endl;
// 重置list的大小
li.resize(3);
cout << "current size:" << li.size() << endl;
printList(li);
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
上面判断是否为空,0表示false, 1表示true
2.list容器的插入操作
插入相关操作API函数原型
第一个push_back() 在容器尾部插入一个元素,这个我们已经使用过,非常熟悉。先联系头尾部添加和删除操作。
#include <iostream>
#include <string>
#include <list>
using namespace std;
void printList(const list<int>& l)
{
for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
// list 大小
list<int> li; // 默认构造函数
// 尾部加数据
li.push_back(10);
li.push_back(20);
printList(li);
// 头部加数据
li.push_front(100);
li.push_front(200);
printList(li);
// 尾部删除
li.pop_back();
printList(li);
// 头部删除
li.pop_front();
printList(li);
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
然后看看这几个插入操作
#include <iostream>
#include <string>
#include <list>
using namespace std;
void printList(const list<int>& l)
{
for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
// list 大小
list<int> li; // 默认构造函数
// 尾部加数据
li.push_back(10);
li.push_back(20);
printList(li);
// 在pos位置插入元素e
list<int>::iterator it = li.begin();
li.insert(++it, 30); // 注意++it 和it++的区别
printList(li);
// 在迭代器位置插入n个元素e
li.insert(++it, 3, 70);
printList(li);
// 在迭代器位置后插入一个容器的区间内元素
list<int> li2; // 默认构造函数
// 尾部加数据
li2.push_back(100);
li2.push_back(200);
li.insert(++it, li2.begin(), li2.end());
printList(li);
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果
3.list容器的删除操作
最后看看删除相关的API
#include <iostream>
#include <string>
#include <list>
using namespace std;
void printList(const list<int>& l)
{
for(list<int>::const_iterator it = l.begin(); it != l.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
// list 大小
list<int> li; // 默认构造函数
// 尾部加数据
li.push_back(10);
li.push_back(20);
li.push_back(30);
li.push_back(30);
li.push_back(40);
printList(li);
// 删除pos位置数据
list<int>::iterator it = li.begin();
li.erase(++it);
printList(li);
// 删除值等于30的全部元素
li.remove(30);
printList(li);
// 清空
li.clear();
cout << "current size: " << li.size() << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
还没有评论,来说两句吧...