list容器
list容器简介
- list是一个双向链表容器,可高效进行插入删除元素
- 不可以随机存取元素,不支持
at.(pos)函数和[]操作符(下标) #include <list>
构造
采用模板类实现,默认构造形式:
list<T> lstlist<int> lstInt; //定义一个存放int的list容器list<float> lstFloat; //定义一个存放float的list容器list<string> lstString; //定义一个存放string的list容器带参数构造
list<int> lstIntA(n, elem); //构造函数将n个elem拷贝给本身list<int> lstIntB(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身list<int> lstIntC(const list &lst); //拷贝构造函数1
2
3
4
5
6
7
8
9
10
11
12
13
14list<int> lst1(3, 5); //5, 5, 5
list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
lst.push_back(4);
list<int>::iterator beg = lst.begin();
beg++;
list<int>::reverse_iterator rbeg = lst.rbeg();
rbeg;
list<int> lst2(beg, rbeg); //2, 3
list<int> lst3(lst); //1, 2, 3, 4
添加删除元素
list.push_back(elem); //在尾部插入元素
list.push_front(elem); //在头部插入元素
list.pop_back(); //删除尾部元素
list.pop_front(); //删除头部元素
访问元素
int x = list.front(); //返回值为第一个节点元素,赋值给x
int x = list.back();
list.front() = 100; //可以访问节点赋值
迭代器
双向迭代器:从两个方向读写
list.begin(); //返回第一个元素的迭代器list.end(); //返回最后一个元素之后的迭代器list.rbegin(); //返回倒数第一个元素的迭代器list.rend(); //返回倒数最后一个后面(第一个前面)的迭代器list无法begin()+n,只能begin()++
赋值
list.assign(beg, end); //将[beg, end)的数据拷贝赋值给本身
list.assigh(n, elem); //将n个elem拷贝赋值给本身
list& operator = (const list &lst); //重载等号操作符
list.swap(lst); //将lst与本身的元素互换
大小
list.size(); //容器中元素的个数
list.empty(); //判断容器是否为空
list.resize(num); //重新指定大小,变短则删除,变长则以默认值填充
list.resize(num, elem); //重新指定大小,变短则删除,变长则以elem填充
插入
list.insert(pos, elem); //在pos插入elem
list.insert(pos, n, elem); //在pos插入n个elem
List.insert(pos, beg, end); //在pos插入[beg, end)
删除
list.clear(); //删除容器所有数据
list.erase(beg, end); //删除[beg, end)中的元素,返回下一个元素的位置
list.erase(pos); //删除pos位置的元素,返回下一个元素的位置
list.remove(elem); //删除容器中所有与elem值匹配的元素
反转
list.reverse(); //反转list容器
迭代器失效
删除结点导致迭代器失效
1 | list<int> lst; |
- Title: list容器
- Author: SyEic_L
- Created at : 2025-02-27 21:52:46
- Updated at : 2025-03-12 22:19:05
- Link: https://blog.syeicl.vip/2025/02/27/list容器/
- License: This work is licensed under CC BY-NC-SA 4.0.