STL - List基础
List 基础:
关于List容器:
list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。
技巧:
- 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
- 如果你需要大量的插入和删除,而不关心随即存取,则应使用list
- 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。
1、定义:
#include <list> // list属于std命名域的,因此需要通过命名限定,例如using std::list; list<int> a; // 定义一个int类型的列表a list<int> a(10); // 定义一个int类型的列表a,并设置初始大小为10 list<int> a(10, 1); // 定义一个int类型的列表a,并设置初始大小为10且初始值都为1 list<int> b(a); // 定义并用列表a初始化列表b deque<int> b(a.begin(), ++a.end()); // 将列表a中的第1个元素作为列表b的初始值 // 除此之外,还可以直接使用数组来初始化向量: int n[] = { 1, 2, 3, 4, 5 }; list<int> a(n, n + 5); // 将数组n的前5个元素作为列表a的初值
2、容量函数
lst.size(); //容器大小 lst.max_size();//容器最大容量 lst.resize(); //更改容器大小 lst.empty(); //容器判空
3、添加函数
lst.push_front(const T& x); //头部添加元素 lst.push_back(const T& x); //末尾添加元素 lst.insert(iterator it, const T& x); //任意位置插入一个元素 lst.insert(iterator it, int n, const T& x); //任意位置插入 n 个相同元素 lst.insert(iterator it, iterator first, iterator last); //插入另一个向量的 [forst,last] 间的数据
4、删除函数
lst.pop_front(); //头部删除元素 lst.pop_back(); //末尾删除元素 lst.erase(iterator it); //任意位置删除一个元素 lst.erase(iterator first, iterator last); //删除 [first,last] 之间的元素 lst.clear(); //清空所有元素
5、访问函数
lst.front(); //访问第一个元素 lst.back(); //访问最后一个元素
6、其他函数
lst.assign(int nSize, const T& x); // 类似于初始化时用数组进行赋值(多个元素赋值) swap(list&, list&); 或 lst.swap(list&); //交换两个同类型容器的元素 lst.merge(); //合并两个列表的元素(默认升序排列) lst.splice(iterator it, list&); //在任意位置拼接入另一个list lst.unique(); //删除容器中相邻的重复元素
7、迭代器
lst.begin(); //开始迭代器指针: lst.end(); // 指向最后一个元素的下一个位置(末尾迭代器指针) lst.cbegin(); // 意思就是不能通过这个指针来修改所指的内容,但还是可以通过其他方式修改的,而且指针也是可以移动的。(指向常量的开始迭代器指针:) lst.cend(); //指向常量的末尾迭代器指针 lst.rbegin(); //反向迭代器指针,指向最后一个元素 lst.rend(); //反向迭代器指针,指向第一个元素的前一个元素

浙公网安备 33010602011771号