STL 容器 —— list

C++ 中的 std::list 是一种双向链表容器,属于标准模板库(STL)的一部分。

1、list 特点

  • 由于其底层实现为双向链表,std::list 在任意位置插入和删除元素都非常高效,时间复杂度为 O(1)。
  • 由于链表元素不存储在连续的内存中,插入和删除操作不会使迭代器失效(除非删除的是迭代器指向的元素)。
  • 与数组或向量不同,std::list 不能进行常数时间的随机访问,遍历元素的时间复杂度为 O(n)。

2、常见操作与方法

2.1、构造函数

    list<int> l1;               // 构造空链表
    list<int> l2(5);            // 构造一个包含 5 个默认值元素的链表
    list<int> l3(5,10);         // 构造一个包含 5 个元素的链表,并全部初始化为 10
    list<int> l4({1,2,3,4,5});  // 用初始化列表构造链表
    list<int> l5(l2);           // 拷贝构造

2.2、元素访问

  • front(): 返回第一个元素的引用。

  • back(): 返回最后一个元素的引用。

2.3、迭代器

  • begin(): 返回指向链表第一个元素的迭代器。

  • end(): 返回指向链表末尾之后的迭代器。

  • rbegin(), rend(): 返回逆序迭代器,分别指向最后一个元素和第一个元素之前的位置。

2.4、长度

  • empty(): 判断链表是否为空。

  • size(): 返回链表中的元素数量。

  • max_size(): 返回链表可以存储的最大元素数。

2.5、修改器

  • clear(): 清空链表,删除所有元素。

  • insert(iterator pos, const T& value): 在迭代器 pos 指向的位置之前插入元素 value

  • emplace(iterator pos, Args&&... args): 在指定位置原地构造元素。

  • erase(iterator pos): 删除 pos 处的元素。

  • push_back(const T& value): 在链表尾部插入元素。

  • emplace_back(Args&&... args): 在链表尾部原地构造元素。

  • push_front(const T& value): 在链表头部插入元素。

  • emplace_front(Args&&... args): 在链表头部原地构造元素。

  • pop_back(): 删除链表尾部元素。

  • pop_front(): 删除链表头部元素。

  • resize(size_type count): 调整链表大小。

  • swap(list& other): 交换两个链表的内容。

2.6、特殊操作

  • splice: 将其他链表的元素移入当前链表。

  • remove: 删除所有等于指定值的元素。

  • remove_if: 根据谓词删除元素。

  • unique: 删除相邻的重复元素。

  • merge: 合并两个有序链表。

  • sort: 对链表进行排序。

  • reverse: 反转链表中的元素顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值