- C 标准库
 - C 标准库
 
- C++ 标准库
 - C++ 库 - 主页
 - C++ 库 - <fstream>
 - C++ 库 - <iomanip>
 - C++ 库 - <ios>
 - C++ 库 - <iosfwd>
 - C++ 库 - <iostream>
 - C++ 库 - <istream>
 - C++ 库 - <ostream>
 - C++ 库 - <sstream>
 - C++ 库 - <streambuf>
 - C++ 库 - <原子>
 - C++ 库 - <复杂>
 - C++ 库 - <异常>
 - C++ 库 - <功能>
 - C++ 库 - <限制>
 - C++ 库 - <语言环境>
 - C++ 库 - <内存>
 - C++ 库 - <新>
 - C++ 库 - <数字>
 - C++ 库 - <正则表达式>
 - C++ 库 - <stdexcept>
 - C++ 库 - <字符串>
 - C++ 库 - <线程>
 - C++ 库 - <元组>
 - C++ 库 - <类型信息>
 - C++ 库 - <实用程序>
 - C++ 库 - <valarray>
 
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 范围构造函数 
 构造一个列表,其中包含从first到last范围内尽可能多的元素。  | 
| 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 | 列表::唯一
 从列表中删除所有连续的重复元素。  |