STL常用容器用法之——List
来源:互联网 发布:供应商主数据 编辑:程序博客网 时间:2024/05/22 07:51
List简介
list是一个双向链表容器,可高效地进行插入删除元素。
list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。迭代器It++(ok) it+5(err)
#include <list>
1、list头尾的添加移除操作
list.push_back(elem); //在容器尾部加入一个元素
list.pop_back(); //删除容器中最后一个元素
list.push_front(elem); //在容器开头插入一个元素
list.pop_front(); //从容器开头移除第一个元素
list.front(); //返回第一个元素。
list.back(); //返回最后一个元素。
例:
list<int>lstInt;
lstInt.push_back(1);
lstInt.push_back(3);
lstInt.push_back(5);
lstInt.push_back(7);
lstInt.push_back(9);
intiFront = lstInt.front(); //1
intiBack = lstInt.back(); //9
lstInt.front()= 11; //11
lstInt.back()= 19; //19
2、list与迭代器
list.begin(); //返回容器中第一个元素的迭代器。
list.end(); //返回容器中最后一个元素之后的迭代器。
list.rbegin(); //返回容器中倒数第一个元素的迭代器。
list.rend(); //返回容器中倒数最后一个元素的后面的迭代器。
//list不能随机访问
it = l.begin();
it ++;
it ++ ;
it ++ ;
//it = it + 5; //不支持随机的访问容器
3、list的插入
list.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
list.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
list.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
list<int> lstA;
list<int>lstB;
lstA.push_back(1);
lstA.push_back(3);
lstA.push_back(5);
lstA.push_back(7);
lstA.push_back(9);
lstB.push_back(2);
lstB.push_back(4);
lstB.push_back(6);
lstB.push_back(8);
lstA.insert(lstA.begin(),11); //{11, 1, 3, 5, 7, 9}
lstA.insert(++lstA.begin(),2,33); //{11,33,33,1,3,5,7,9}
lstA.insert(lstA.begin(), lstB.begin() , lstB.end() ); //{2,4,6,8,11,33,33,1,3,5,7,9}
4、list的删除
list.clear(); //移除容器的所有数据
list.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
list.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
lst.remove(elem); //删除容器中所有与elem值匹配的元素。
例:
// l {0 1 2 3 4 5}
list<int>::iterator it1 = l.begin();
list<int>::iterator it2 = l.begin();
it2 ++ ;
it2 ++ ;
it2 ++ ;
l.erase(it1, it2); // 3 4 5
l.erase(l.begin()); // 4 5
l.remove(5); // 4
5 、list的赋值
list.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身。注意该区间是左闭右开的区间。
list.assign(n,elem); //将n个elem拷贝赋值给本身。
list& operator=(const list &lst); //重载等号操作符
list.swap(lst); // 将lst与本身的元素互换。
例:list<int>lstIntA,lstIntB,lstIntC,lstIntD;
lstIntA.push_back(1);
lstIntA.push_back(3);
lstIntA.push_back(5);
lstIntA.push_back(7);
lstIntA.push_back(9);
lstIntB.assign(lstIntA.begin(),lstIntA.end()); //1 3 5 7 9
lstIntC.assign(5,8); //8 8 8 8 8
lstIntD= lstIntA; //13 5 7 9
lstIntC.swap(lstIntD); //互换
- STL常用容器用法之——List
- STL — list容器用法的详解
- STL常用容器用法之——vector
- STL常用容器用法之——Deque
- STL常用容器用法之——stack
- STL常用容器用法之——queue和priority_queue
- STL常用容器用法之——Set和multiset
- STL常用容器用法之——Map和multimap
- stl之序列容器——list
- STL容器用法之List(转载)
- STL之list容器用法详解
- STL之list容器函数用法详解
- STL常用容器用法
- 常用stl 容器用法
- STL容器之list
- STL容器之list
- STL容器之list
- STL容器之list
- [图像]TexturePacker打包命令脚本
- 静态方法和非静态方法在父类和子类之间的区别
- badboy 插入检查点
- PAT 甲级 1024. Palindromic Number
- 胡润:财富自由
- STL常用容器用法之——List
- 字典树模板
- 存储函数、控制语句、循环语句
- mysql删除末尾数据后,再插入新数据id不连续解决方案
- BZOJ4516: [Sdoi2016]生成魔咒(后缀数组)
- C++实现二维离散傅里叶变换
- Jupyter云端python开发环境的搭建
- Python笔记(八)--运算符
- 直接拿来用!最火的Android开源项目(一)