Cpp Standard Library 简明教程
C++ Library - <list>
Introduction
列表是一个普遍使用的顺序容器。容器是一种存储相同类型数据类型数据的对象。列表容器作为双向链表实现,因此它提供对其数据进行双向顺序访问。
列表不提供快速的随机访问,它仅支持双向顺序访问。列表允许在序列中的任何位置进行插入和删除操作,时间复杂度为常数。
列表的元素可以分散在内存的不同块中。容器存储必要的信息以允许对其数据进行顺序访问。列表可以在运行时根据需要从两端收缩或扩展。存储需求由内部分配器自动满足。
零大小的列表也是有效的。在这种情况下,list.begin() 和 list.end() 指向相同位置。但是调用 front() 或 back() 的行为是未定义的。
Definition
下面是 <list> 头文件中 std::list 的定义
template < class T, class Alloc = allocator<T> > class list;
Parameters
-
T − 包含元素的类型。T 可以用包括用户自定义类型在内的任何其他数据类型替换。
-
Alloc − 分配器对象类型。默认情况下,使用分配器类模板,该模板定义最简单的内存分配模型,并且与值无关。
Member types
以下成员类型可作为参数或返回类型,由成员函数使用。
Sr.No. |
Member types |
Definition |
1 |
value_type |
T(模板的第一个参数) |
2 |
allocator_type |
Alloc(模板的第二个参数) |
3 |
reference |
value_type& |
4 |
const_reference |
const value_type& |
5 |
pointer |
value_type* |
6 |
const_pointer |
const value_type* |
7 |
iterator |
值类型的随机访问迭代器 |
8 |
const_iterator |
const 值类型的随机访问迭代器 |
9 |
reverse_iterator |
std::reverse_iterator <iterator> |
10 |
const_reverse_iterator |
std::reverse_iterator <const_iterator> |
11 |
size_type |
size_t |
12 |
difference_type |
ptrdiff_t |
Functions from <list>
以下是 <list> 头文件中的所有方法的列表。
Constructors
Sr.No. |
Method & Description |
1 |
list::list 默认构造函数构造一个空的没有任何元素的列表。 |
2 |
list::list fill 构造函数构造一个新的列表,其中包含 n 个元素,并将 val 分配给列表的每个元素。 |
3 |
list::list fill 构造函数构造一个新的列表,其中包含 n 个元素,并将零值分配给列表的每个元素。 |
4 |
list::list range 构造函数构造一个列表,其中包含从 first 到 last 范围内与元素一样多的元素。 |
5 |
list::list 复制构造函数构造一个列表,其中包含存在于现有列表中的每个元素的副本。 |
6 |
list::list move 构造函数使用移动语义构造一个包含其他内容的列表。 |
7 |
list::list 初始化列表构造函数使用移动语义构造一个包含其他内容的列表。 |
Destructor
Sr.No. |
Method & Description |
1 |
list::~list 通过释放其内存来销毁列表对象。 |
Member functions
Sr.No. |
Method & Description |
1 |
list::assign range 版本通过替换旧值来为列表分配新值。 |
2 |
list::assign fill 版本通过替换旧值来为列表分配新值。 |
3 |
list::assign 初始化列表版本通过替换旧值来为列表分配新值。 |
4 |
list::back 返回对列表最后一个元素的引用。 |
5 |
list::begin 返回一个随机访问迭代器,该迭代器指向列表的第一个元素。 |
6 |
list::cbegin 返回一个常量随机访问迭代器,该迭代器指向列表的头部。 |
7 |
list::cend 返回一个常量随机访问迭代器,该迭代器指向列表的尾部。 |
8 |
list::clear 从列表中移除所有元素,并将列表大小设置为零,从而销毁列表。 |
9 |
list::crbegin 返回一个常量反向迭代器,该迭代器指向列表的最后一个元素。 |
10 |
list::crend 返回一个常量反向迭代器,该迭代器指向列表中第一个元素之前的理论元素。 |
11 |
list::emplace 在给定位置插入新元素来扩展列表。 |
12 |
list::emplace_back 在列表的尾部插入新元素,并使列表大小增加 1。 |
13 |
list::emplace_front 在列表的头部插入新元素,并使列表大小增加 1。 |
14 |
list::empty 测试列表是否为空。 |
15 |
list::end 返回一个随机访问迭代器,该迭代器指向列表的最后一个元素。 |
16 |
list::erase 位置版本从列表中移除单个元素。 |
17 |
list::erase 范围版本从列表中移除范围内的元素。 |
18 |
list::front 返回对列表中第一个元素的引用。 |
19 |
list::get_allocator 返回与列表关联的分配器。 |
20 |
list::insert 单个元素版本在列表中的位置插入新元素来扩展迭代器。 |
21 |
list::insert 填充版本在容器中插入新元素来扩展列表。 |
22 |
list::insert 范围版本在容器中插入新元素来扩展列表。 |
23 |
list::insert 移动版本在容器中插入新元素来扩展列表。 |
24 |
list::insert 初始化器列表版本 通过在容器中插入新元素,来拓展列表 |
25 |
list::max_size 返回列表可以容纳的最大元素数。 |
26 |
list::merge 将两个已排序的列表合并为一个。 |
27 |
list::merge 比较函数 将两个已排序的列表合并为一个。 |
28 |
list::merge 移动版本 通过使用移动语义,将两个已排序的列表合并为一个。 |
29 |
list::merge 比较函数 移动版本 通过使用移动语义,将两个已排序的列表合并为一个。 |
30 |
list::operator= 复制版本 通过替换旧元素,为列表分配新内容。 |
31 |
list::operator= 移动版本 通过替换旧元素,为列表分配新内容。 |
32 |
list::operator= 初始化器列表版本 通过替换旧元素,为列表分配新内容。 |
33 |
list::pop_back 从列表中删除最后一个元素。 |
34 |
list::pop_front 从列表中删除第一个元素。 |
35 |
list::push_back 在列表的末尾插入新元素。 |
36 |
list::push_back 移动版本 在列表的末尾插入新元素。 |
37 |
list::push_front 在列表的开头插入新元素。 |
38 |
list::push_front 移动版本 在列表的开头插入新元素。 |
39 |
list::rbegin 返回一个反向迭代器,它指向列表的最后一个元素。 |
40 |
list::remove 从列表中删除与该值匹配的元素。 |
41 |
list::remove_if 从列表中删除满足条件的元素。 |
42 |
list::rend 返回一个反向迭代器,它指向列表的相反末尾。 |
43 |
list::resize 更改列表的大小。 |
44 |
list::resize value 版本更改列表的大小。 |
45 |
list::reverse 反转列表中元素的顺序。 |
46 |
list::size 返回列表中存在的元素数量。 |
47 |
list::sort 对列表中的元素进行排序。 |
48 |
list::sort compare 函数对列表中的元素进行排序。 |
49 |
list::splice 将列表中的所有元素转移到 *this。 |
50 |
list::splice 单个元素将由迭代器 i 指出的元素从列表 x 转移到 *this。 |
51 |
list::splice move 版本通过使用移动语义将列表 x 中的所有元素转移到 *this。 |
52 |
list::splice 范围版本将 x 中从 first 到 last 范围内的元素转移到 *this。 |
53 |
list::splice 单个元素 move 版本通过使用移动语义将由迭代器 i 指出的元素从列表 x 转移到 *this。 |
54 |
list::splice 范围和 move 版本通过使用移动语义将 x 中从 first 到 last 范围内的元素转移到 *this。 |
55 |
list::swap 将列表的内容与另一个列表 x 的内容交换。 |
56 |
list::unique 删除列表中所有连续重复的元素。 |
57 |
list::unique 删除列表中所有连续重复的元素。 |
Non-member overloaded functions
Sr.No. |
Method & Description |
1 |
[role="bare"]../cpp_standard_library/cpp_list_operator_equal_to.html 检验两个列表是否相等。 |
2 |
operator!= 检验两个列表是否相等。 |
3 |
operator< 检验第一个列表是否小于另一个列表。 |
4 |
operator⇐ 检验第一个列表是否小于或等于另一个列表。 |
5 |
operator> 测试第一个列表是否大于另一个。 |
6 |
operator>= 测试第一个列表是否大于或等于另一个。 |
7 |
swap 交换两个列表的内容。 |