1. 头文件
#include <list>
2. 底层实现
3. 对象创建
方法 | 说明 |
---|
list<int> lst; | 空列表 |
list<int> lst(10); | 10个元素,默认值为0 |
list<int> lst(10, 5); | 10个元素,值均为5 |
list<int> a(10); list<int> b(a); | 拷贝a创建b |
int a[] = {1, 2, 3, 4, 5}; list<int> lst(a, a + 5); | 拷贝普通数组的所有元素 |
array<int> a = {1, 2, 3, 4, 5}; list<int> lst(a.begin() + 2, a.end()); | {3, 4, 5} |
4. 常用方法
方法 | 说明 |
---|
l.size(); | 容器元素个数 |
l.max_size(); | 能容纳的最大元素个数 |
l.resize(num); | 重新设置容器的大小 |
l.empty(); | 容器是否为空 |
方法 | 说明 |
---|
l.push_back(); | 在链表尾添加元素 |
l.push_front(); | 在链表首添加元素 |
l.emplace_back(); | 同push_back,效率更高 |
l.emplace_front(); | 同push_front,效率更高 |
l.pop_back(); | 获取尾部元素,删除 |
l.pop_front(); | 获取首部元素,删除 |
l.insert(iterator it, const T& ele); | set中直接插入元素,list需指定位置,迭代器之前插入元素 |
l.insert(iterator it, int n, const T& ele); | 插入n个元素 |
l.insert(iterator it, iterator first, iterator last); | 插入另一个list的[first, last) |
l.erase(iterator it); | 删除某个迭代器元素 |
l.erase(iterator first, iterator last); | 删除[first, last)之间元素 |
l.remove(value); | 删除容器中所有等于values的元素 |
l.remove_if(Predicate pred); | 删除满足谓词pred的元素 |
l.unique(); | 容器元素去重,只保留一个 |
l.unique(BinaryPredicate pred); | 满足谓词条件的元素去重,只保留一个 |
l.clear(); | 清空元素 |
方法 | 说明 |
---|
l.front(); | 获取首部元素,区别于pop_front() |
l.back(); | 获取尾部元素,区别于pop_back() |
注:不支持下标访问[]和at()访问!
方法 | 说明 |
---|
begin()/end()/rbegin()/rend()/cbegin()/cend() | 迭代器访问 |
方法 | 说明 |
---|
std::sort(l.begin(), l.end()); | 系统函数。默认升序,也可自定义比较函数实现降序 |
std::reverse(l.begin(), l.end()); | 系统函数。列表翻转 |
方法 | 说明 |
---|
l.assign(int n, const T& ele); | 用n个ele赋值 |
l1.swap(l2); swap(l1, l2); | 交换两个同类型容器的所有元素 |
l1.merge(l2); | 合并两个列表元素,默认合并后升序排列 |
l1.splice(iterator it, list& l2); | 在任意位置拼接入另一个list |
参考文章:
https://www.cnblogs.com/linuxAndMcu/p/10260627.html(实例,推荐)
http://c.biancheng.net/view/6892.html(定义)
https://www.cnblogs.com/linuxAndMcu/p/10260627.html
https://blog.csdn.net/lskyne/article/details/10418823
created by shuaixio, 2021.06.15