STL(Standard Template Library)是C++中的一个重要库,它提供了一组通用的模板类和函数,用于实现常用的数据结构和算法。其中,STL list是STL库中的一个双向链表容器类。
list是一个线性顺序容器,它以节点的形式存储元素,每个节点都包含一个值和指向前一个节点和后一个节点的指针。与数组和向量(vector)不同,list的插入和删除操作复杂度为O(1),不受容器大小的影响。然而,由于没有随机访问的能力,访问和遍历list的操作复杂度为O(n)。
总之,STL list是一个灵活、高效的双向链表容器,适用于需要频繁插入和删除元素的场景,提供了一系列方便的操作函数和迭代器,方便使用者进行元素的管理和操作。
| 构造函数(constructor) | 接口说明 |
|---|---|
| list(size_type n,const value_type& val=value_type()) | 构造的list中包含n个值为val的元素 |
| list() | 构造空的list |
| list(const list&x) | 构造拷贝函数 |
| list(InputIterator first,InputIterator last) | 用(first,last)区间中的元素构造list |
| 函数声明 | 接口说明 |
|---|---|
| begin+end | 返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器 |
| rbegin+rend | 返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置 |

正、反向迭代器的区别:
- begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
- rbegin与rend为反向迭代器,对迭代器执行++操作,迭代器向前移动
- 正向迭代器和反向迭代器对称
| 函数声明 | 接口说明 |
|---|---|
| empty | 检测list是否为空,是返回true,否返回false |
| size | 返回list中有效节点的个数 |
| 函数声明 | 接口说明 |
|---|---|
| front | 返回list的第一个节点中值的引用 |
| back | 返回list的最后一个节点中值的引用 |
| 函数声明 | 接口说明 |
|---|---|
| push_front | 在list首元素前插入值为val的元素 |
| pop_front | 删除list中第一个元素 |
| push_back | 在list尾部插入值为val的元素 |
| pop_back | 删除list中最后一个元素 |
| insert | 在list position位置中插入值为val的元素 |
| erase | 删除list position位置的元素 |
| swap | 交换两个list中的元素 |
| clear | 清空list中的有效元素 |