C++ 库 - <列表>


介绍

列表是一种常用的序列容器。容器是保存相同类型数据的对象。列表容器被实现为双向链表,因此它提供对其数据的双向顺序访问。

List不提供快速随机访问,它只支持双向顺序访问。列表允许在恒定时间内在序列中的任何位置进行插入和删除操作。

列表的元素可以分散在不同的内存块中。容器存储必要的信息以允许顺序访问其数据。列表可以在运行时根据需要从两端收缩或扩展。存储要求由内部分配器自动满足。

零大小的列表也是有效的。在这种情况下 list.begin() 和 list.end() 指向相同的位置。但是调用 front() 或 back() 的Behave是未定义的。

定义

以下是 <list> 头文件中 std::list 的定义

template < class T, class Alloc = allocator<T> > class list;

参数

  • T - 所包含元素的类型。

    T 可以替换为任何其他数据类型,包括用户定义的类型。

  • Alloc - 分配器对象的类型。

    默认情况下,使用分配器类模板,它定义了最简单的内存分配模型,并且与值无关。

会员类型

以下成员类型可以用作成员函数的参数或返回类型。

先生。 会员类型 定义
1 值类型 T(模板的第一个参数)
2 分配器类型 Alloc(模板的第二个参数)
3 参考 值类型&
4 常量引用 常量值类型&
5 指针 值类型*
6 常量指针 常量值类型*
7 迭代器 value_type 的随机访问迭代器
8 常量迭代器 const value_type 的随机访问迭代器
9 反向迭代器 std::reverse_iterator <迭代器>
10 常量反向迭代器 std::reverse_iterator <const_iterator>
11 尺码类型 尺寸_t
12 差异类型 ptrdiff_t

来自<列表>的函数

下面是 <list> 标头中所有方法的列表。

构造函数

先生。 方法及说明
1 list::list 默认构造函数

构造一个包含零个元素的空列表。

2 list::list 填充构造函数

构造一个包含n 个元素的新列表,并将val分配给列表的每个元素。

3 list::list 填充构造函数

构造一个包含n 个元素的新列表,并将零值分配给列表的每个元素。

4 list::list 范围构造函数

构造一个列表,其中包含从firstlast范围内尽可能多的元素。

5 list::list 复制构造函数

使用现有列表中存在的每个元素的副本构造一个列表。

6 list::list 移动构造函数

使用移动语义构造一个包含other内容的列表。

7 list::list 初始值设定项 列表构造函数

使用移动语义构造一个包含other内容的列表。

析构函数

先生。 方法及说明
1 列表::~列表

通过释放内存来销毁列表对象。

会员功能

先生。 方法及说明
1 list::分配 范围版本

通过替换旧值来为列表分配新值。

2 list::分配 填充版本

通过替换旧值将新值分配给列表。

3 list::分配 初始值设定项列表版本

通过替换旧值将新值分配给列表。

4 列表::返回

返回对列表最后一个元素的引用。

5 列表::开始

返回一个随机访问迭代器,它指向列表的第一个元素。

6 列表::cbegin

返回一个指向列表开头的常量随机访问迭代器。

7 列表::cend

返回一个指向列表末尾的常量随机访问迭代器。

8 列表::清除

通过从列表中删除所有元素并将列表大小设置为零来销毁列表。

9 列表::crbegin

返回一个常量反向迭代器,它指向列表的最后一个元素。

10 列表::crend

返回一个常量反向迭代器,它指向列表中第一个元素之前的理论元素。

11 列表::安放

通过在给定位置插入新元素来扩展列表。

12 列表::emplace_back

在列表末尾插入新元素并将列表大小增加一。

13 列表::emplace_front

在列表开头插入新元素并将列表大小增加一。

14 列表::空

测试列表是否为空。

15 列表::结束

返回一个随机访问迭代器,它指向列表的最后一个元素。

16 list::擦除位置版本

从列表中删除单个元素。

17 号 list::擦除范围版本

从列表中删除元素范围。

18 列表::前面

返回对列表第一个元素的引用。

19 列表::获取分配器

返回与列表关联的分配器

20 list::插入 单元素版本

通过在列表中的位置插入新元素来扩展迭代器。

21 列表::插入 填充版本

通过在容器中插入新元素来扩展列表。

22 list::插入 范围版本

通过在容器中插入新元素来扩展列表。

23 list::插入 移动版本

通过在容器中插入新元素来扩展列表。

24 list::insert 初始化列表版本

通过在容器中插入新元素来扩展列表

25 列表::最大大小

返回列表可以容纳的最大元素数。

26 列表::合并

将两个已排序的列表合并为一个。

27 list::合并 比较函数

将两个已排序的列表合并为一个。

28 list::合并 移动版本

使用移动语义将两个排序列表合并为一个。

29 list::merge 比较函数移动版本

使用移动语义将两个排序列表合并为一个。

30 list::operator= 复制版本

通过替换旧内容将新内容分配到列表。

31 list::operator= 移动版本

通过替换旧内容将新内容分配到列表中。

32 list::operator= 初始化列表版本

通过替换旧内容将新内容分配到列表中。

33 列表::pop_back

从列表中删除最后一个元素。

34 列表::pop_front

从列表中删除第一个元素。

35 列表::push_back

在列表末尾插入新元素。

36 list::push_back 移动版本

在列表末尾插入新元素。

37 列表::push_front

在列表的开头插入新元素。

38 list::push_front 移动版本

在列表的开头插入新元素。

39 列表::r开始

返回一个反向迭代器,它指向列表的最后一个元素。

40 列表::删除

从列表中删除与该值匹配的元素。

41 列表::remove_if

从列表中删除满足条件的元素。

42 列表::撕裂

返回一个反向迭代器,它指向列表的反向末尾。

43 列表::调整大小

更改列表的大小。

44 list::调整 值版本大小

更改列表的大小。

45 列表::反向

反转列表中存在的元素的顺序。

46 列表::大小

返回列表中存在的元素数。

47 列表::排序

对列表的元素进行排序。

48 list::sort 比较函数

对列表的元素进行排序。

49 列表::拼接

将列表中的所有元素传输到 *this。

50 list::拼接 单个元素

将迭代器i指向的元素从列表x传输到*this

51 list::拼接 移动版本

使用移动语义将列表x中的所有元素转移到*this 。

52 list::拼接 范围版本

将x第一个最后一个范围内的元素传输到* this

53 list::splice 单元素移动版本

使用移动语义将迭代器i指向的元素从列表x转移到*this中。

54 list::拼接 范围和移动版本

使用移动语义将第一个最后一个范围内的元素从x转移到*this 。

55 列表::交换

将列表的内容与另一个列表x的内容交换。

56 列表::唯一

从列表中删除所有连续的重复元素。

57 列表::唯一

从列表中删除所有连续的重复元素。

非成员重载函数

先生。 方法及说明
1 运算符==

测试两个列表是否相等。

2 运算符!=

测试两个列表是否相等。

3 运算符<

测试第一个列表是否小于其他列表。

4 运算符<=

测试第一个列表是否小于或等于其他列表。

5 运算符>

测试第一个列表是否大于其他列表。

6 运算符>=

测试第一个列表是否大于或等于其他列表。

7 交换

交换两个列表的内容。