容器的遍历:
void printlist(list<int>& L) {
for (list<int>::const_iterator it = L.begin(); it != L.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
一.构造函数
list<int lst>//list曹勇模板类试下新年,对象的默认构造形式
list(beg,end);//构造函数将[beg,end)区间中的元素拷贝给本身
list(n,elme);//构造函数将n个elem拷贝给本身
list(const list &lst);//拷贝构造函数
//list容器构造函数
void test01() {
//创建list容器
list<int> L1;
//添加数据
L1.push_back(10);
L1.push_back(20);
L1.push_back(30);
L1.push_back(40);
//遍历容器
printlist(L1);
//区间方法构造
list<int>L2(L1.begin(), L1.end());
printlist(L2);
//拷贝构造
list<int>L3(L2);
printlist(L3);
//n个elem
list<int>L4(10, 1000);
printlist(L4);
}
二.赋值和交换
assign(beg,end);//将[beg,end)区间中的数据拷贝赋值给本身
assign(n,elem);//将n个elem拷贝赋值给本身
list& operator=(const list &list);//重载等号操作符,用的时候直接用等号就行
swap(lst);//将lst于本身的元素进行交换
void test01() {
//创建list容器
list<int> L1;
//添加数据
L1.push_back(10);
L1.push_back(20);
L1.push_back(30);
L1.push_back(40);
//遍历容器
printlist(L1);
list<int>L2;
L2 = L1;
printlist(L2);
list<int>L3;
L3.assign(L2.begin(), L2.end());
printlist(L3);
list<int>L4;
L4.assign(10, 100);//十个一百
//与之前的容器操作相似,不东懂可以看一下前面的函数
}
三.大小操作
size();//返回容器中的元素个数
empty();//判断容器是否为空
resize();//重新指定容器的长度为num,若容器变长,则以默认值填充新的位置,若果容器变短,则末尾超出容器长度的元素被删除
resize(num,elem);重新指定容器的长度为num,若容器变长,则以elem填充新的位置,若果容器变短,则末尾超出容器长度的元素被删除
操作与前几个容器一样,直接去看前面几个容器的代码吧
代码略
四.插入和删除
push_back(elem);//在容器尾部加一个元素
pop_back();//删除容器最后一个元素
push_from(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除一个元素
insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置
insert(pos,n,elem);//在pos位置插n个elem元素的拷贝,无返回值
insert(pos,beg,end);//在pos位置插[beg,end)区间的数据
clear();//移除所有元素
erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置
erase(pos);//删除pos位置的数据,返回下一个数据的位置
remove(elem);//删除容器中所有与elem相匹配的元素
void test01() {
list<int> L;
L.push_back(10);
L.push_back(20);
L.push_back(30);
L.push_front(100);
L.push_front(200);
L.push_front(300);
printlist(L);
//尾删
L.pop_back();
printlist(L);//300 200 100 10 20
//头删
L.pop_front();//200 100 10 20
//insert插入
L.insert(L.begin(), 1000);
printlist(L);//1000 200 100 10 20
//删除
L.erase(L.begin());
printlist(L); //200 100 10 20
//移除
L.remove(10);//多个10页都会删除
printlist(L);//200 100 20
}
五.数据存取
front();//返回第一个元素
back();//返回第二个元素
不支持[]访问容器元素,也不支持at方式访问容器元素,原因是list本质链表,不是连续空间存储数据,迭代器也是不支持随机访问的
代码略
六.反转和排序
reverse();//反转链表
sort();//链表排序
void test01() {
list<int> L;
L.push_back(10);
L.push_back(20);
L.push_back(30);
printlist(L);//10 20 30
L.reverse();
printlist(L);// 30 20 10
//所有不支持随机访问的迭代器的容器,不可以用标准算法
//不支持随机访问迭代器的容器,内部会提供相应的算法
//sort(L.begin(), L.end());//运行会报错,
L.sort();//直接这样写即可
printlist(L);
}