C++——如何正确的使用STL中list?

正确认识list

STL(Standard Template Library)是C++中的一个重要库,它提供了一组通用的模板类和函数,用于实现常用的数据结构和算法。其中,STL list是STL库中的一个双向链表容器类。

list是一个线性顺序容器,它以节点的形式存储元素,每个节点都包含一个值和指向前一个节点和后一个节点的指针。与数组和向量(vector)不同,list的插入和删除操作复杂度为O(1),不受容器大小的影响。然而,由于没有随机访问的能力,访问和遍历list的操作复杂度为O(n)。

总之,STL list是一个灵活、高效的双向链表容器,适用于需要频繁插入和删除元素的场景,提供了一系列方便的操作函数和迭代器,方便使用者进行元素的管理和操作。

list的优缺点

  1. list的底层采用的是双向链表结构,可以通过节点找到前一个元素和后一个元素
  2. 和其他容器相比,list的插入删除效率更好
  3. list不支持随机访问,只能从头部或者尾部迭代到该位置
  4. list可以在任意位置进行插入删除

list的常用接口

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

list iterator的使用

函数声明 接口说明
begin+end 返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器
rbegin+rend 返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位置的reverse_iterator,即begin位置

C++——如何正确的使用STL中list?_第1张图片

正、反向迭代器的区别:

  1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动
  2. rbegin与rend为反向迭代器,对迭代器执行++操作,迭代器向前移动
  3. 正向迭代器和反向迭代器对称

list capacity

函数声明 接口说明
empty 检测list是否为空,是返回true,否返回false
size 返回list中有效节点的个数

list element access

函数声明 接口说明
front 返回list的第一个节点中值的引用
back 返回list的最后一个节点中值的引用

list modifiers

函数声明 接口说明
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中的有效元素

你可能感兴趣的:(c++,list,开发语言)