一.基础概念
相当于数据结构里面的双向链表


二.基础操作
1.list对象创建
|---------------------------------------------------|------------------------------------------------------------------------|
| 1. 默认构造函数 | list<int> l1; |
| 2. 初始化列表 | list<int> l2_1 = { 9,8,7,6,5 }; list<int> l2_2({ 9, 8, 7, 1, 5 }); |
| 3. 迭代器 | list <int> l3(l2_1.begin(), l2_1.end()); |
| 4. 全0初始化 | list<int> l4(8); |
| 5. list<int> 变量名(a, b) 代表申请 a 个空间的元素,每个元素初始化为 b | list <int> l5(8, 6);//创建8个6 |
| 6. 拷贝构造函数 | list<int> l6(l2_2); |
2.list赋值操作
|---------------------------|--------------------------------------------------|
| | list<int> l = { 9,8,5,2,1,1 }; |
| 1. = 赋值 | list<int> l1; l1 = l; |
| 2. assign(迭代器) | list<int> l2; l2.assign(l1.begin(), l1.end()); |
| 3. assign(初始化列表) | list<int> l3; l3.assign({ 1,3,1,4 }); |
| 4. assign(a, b) 初始化 a 个 b | list<int> l4; l4.assign(8, 6); |
3.list大小操作
|----------|---------------------------------------------|
| 1.empty | l.empty() |
| 2.size | l.size() |
| 3.resize | l.resize(18); l.resize(20, 6);//第19,20位元素是6 |
4.list数值插入
|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| 1、push_front | l.push_front(-1); |
| 2、push_back | l.push_back(1); |
| 3、insert 3.1 insert(迭代器, 值) 3.2 insert(迭代器, 数量, 值) 3.3 insert(迭代器,迭代器的开始位置,迭代器的结束位置) | 3.1 l.insert(l.begin(), 0);//在头前面插入0 3.2 l.insert(l.begin(), 5, 8);//在头前面插入5个8 3.3 l.insert(l.begin(), l.begin(), l.end());//在头前面插入l的头到尾数据 |
5.list数值删除
|----------------|-----------------------------------------------------------|
| 1、pop_front,头删 | l.pop_front(); |
| 2、pop_back,尾删 | l.pop_back(); |
| 3、erase,任意位置删 | l.erase(l.begin())//删除第一个元素 l.erase(it, l.end());//删除从头到尾 |
| 4、clear,全部删除 | l.clear(); |
6.list数值访问
//list无法下标访问
// l[4]; 无法进行随机访问
// l.at(6); 无法进行随机访问
//只能通过迭代器++,或--操作
list<int> l = { -1, 9, 8, 5, 2, 1, 1, -1 };
l++;
7.list链表反转reverse()
list<int> l({ 1,2,3 });
printList(l);//1 2 3
l.reverse();
printList(l);//3 2 1
8.list链表排序sort()
bool cmp(const int& a, const int& b) {
return a > b;
}
list<int> l = { 4,2,6,5,3,1 };
l.sort();
printList(l);//1 2 3 4 5 6
l.sort(cmp);
printList(l);//6 5 4 3 2 1