简介
List是一种常用的序列容器. Container是一个保存相同类型数据的对象.列表容器实现为双向链表,因此它提供对其数据的双向顺序访问.
列表不提供快速随机访问,它仅支持双向顺序访问. List允许在一个序列中的任何位置以恒定时间进行插入和删除操作.
列表元素可以分散在不同的内存块中.容器存储必要的信息以允许顺序访问它的数据.列表可以在运行时根据需要从两端收缩或扩展.内部分配器自动满足存储要求.
零大小的列表也是有效的.在这种情况下,list.begin()和list.end()指向同一位置.但调用front()或back()的行为是未定义的.
定义
以下是来自< list>的std :: list的定义.头文件
template < class T, class Alloc = allocator> class list;
参数
T : 包含的元素的类型.
T可以被任何其他数据类型替换,包括用户定义的类型.
Alloc : 分配器对象的类型.
默认情况下,使用allocator类模板,该模板定义了最简单的内存分配模型,并且与值无关.
成员类型
以下成员类型可用作参数或按成员函数返回类型.
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | value_type | T(模板的第一个参数) |
2 | allocator_type | Alloc(模板的第二个参数) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | 指针 | value_type * |
6 | const_pointer | const value_type * |
7 | iterator | value_type的随机访问迭代器 |
8 | const_iterator | 随机访问迭代器到const value_type |
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 |
来自< list>的函数
以下是所有方法的列表来自< list>标题.
构造函数
Sr.No . | 方法&说明 |
---|---|
1 | list::list 默认构造函数 构造一个零元素的空列表. |
2 | list :: list fill constructor 使用 n 元素构造一个新列表并指定 val 到列表的每个元素. |
3 | list :: list fill constructor 使用 n 元素构造一个新列表,并为列表的每个元素赋值为零. |
4 | list :: list 范围构造函数 构造一个包含 first 到 last |
5 | list :: list copy constructor 构造一个包含每个副本的列表现有清单中的元素. |
6 | list :: list move constructor 构造一个包含使用移动语义的 other 的内容. |
7 | list :: list 初始化列表构造函数 使用移动语义构造一个包含 other 内容的列表. |
析构函数
Sr.No. | 方法&说明 |
---|---|
1 | list::~list 通过解除分配内存来销毁列表对象. |
成员函数
Sr.No. | 方法&说明 |
---|---|
1 | list::assign 范围版本 通过替换旧值将新值分配给列表. |
2 | list :: assign fill version 通过替换旧值将新值分配给列表. |
3 | list :: assign 初始化列表版本 通过替换旧值将新值分配给列表. |
4 | list : :back 返回对列表最后一个元素的引用. |
5 | list :: begin 返回随机访问迭代器指向列表的第一个元素. |
6 | list :: cbegin 返回一个指向的常量随机访问迭代器列表的开头. |
7 | list :: cend 返回一个指向列表末尾的常量随机访问迭代器. |
8 | list :: clear 通过从列表中删除所有元素并将列表大小设置为零来销毁列表./p> |
9 | list :: crbegin 返回一个指向列表最后一个元素的常量反向迭代器. |
10 | list :: crend 返回一个常量反向迭代器,它指向列表中第一个元素之前的理论元素. |
11 | list::emplace 通过在给定位置插入新元素来扩展列表. |
12 | list :: emplace_back 在列表末尾插入新元素,并将列表大小增加一个. |
13 | list :: emplace_front 在列表的开头插入新元素并增加列表大小一个. |
14 | list :: empty 测试列表是否为空. |
15 | list :: end 返回一个随机访问迭代器,它指向列表的最后一个元素. |
16 | list :: erase position version 从列表中删除单个元素. |
17 | list :: erase 范围版本 从列表中删除元素范围. |
18 | list : :front 返回对列表第一个元素的引用. |
19 | list :: get_allocator 返回与列表关联的分配器 |
20 | list :: insert 单个元素版本 通过插入扩展迭代器列表中位置的新元素. |
21 | list :: insert fill version Extends通过在容器中插入新元素来列出. |
22 | list :: insert range version 通过插入新元素来扩展列表在容器中. |
23 | list :: insert move version 通过在容器中插入新元素来扩展列表. |
24 | list :: insert 初始化列表版本 通过在容器中插入新元素来扩展列表 |
25 | list :: max_size 返回最大数量o f元素可以按列表持有. |
26 | list :: merge 将两个已排序的列表合并为一个. |
27 | list::merge 比较函数 将两个已排序的列表合并为一个. |
28 | list :: merge 移动版本 使用移动语义将两个已排序的列表合并为一个. |
29 | 列表: :合并 比较函数移动版本 使用移动语义将两个已排序的列表合并为一个. |
30 | list :: operator = copy version 通过替换旧内容将新内容分配给列表. |
31 | list :: operator = move version 通过替换旧内容将新内容分配给列表. |
32 | list :: operator = 初始化列表版本 通过替换旧内容将新内容分配给列表. |
33 | list :: pop_back 从列表中删除最后一个元素. |
34 | list :: pop_front 删除列表中的第一个元素. |
35 | list :: push_back 在列表末尾插入新元素. |
36 | list :: push_back move version 在列表末尾插入新元素. |
37 | list :: push_front 在列表的开头插入新元素. |
38 | list :: push_front 的移动version 在列表的开头插入新元素. |
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 对ele进行排序列表中的内容. |
48 | list :: sort compare function 对列表元素进行排序. |
49 | list::splice 将列表中的所有元素转移到* this. |
50 | list :: splice 单个元素 将列表 x 中的迭代器 i 指向的元素传输到 * this . |
51 | list :: splice move version 从列表转移所有元素x 到 * this 使用move语义. |
52 | list :: splice range version 转移 |
53 | list :: splice 单个元素移动版本 将列表 x 中迭代器 i 指向的元素传输到 * this 使用移动语义. |
54 | list :: splice 范围和移动版本 转移通过使用移动语义, first 到的范围内的元素从 x 到 * this . |
55 | list :: swap 将列表内容与另一个列表 x 的内容进行交换. |
56 | list :: unique 从列表中删除所有连续的重复元素. |
57 | list :: unique 从列表中删除所有连续的重复元素. |
非成员重载函数
Sr.No. | 方法&说明 |
---|---|
1 | operator== 测试两个列表是否相等. |
2 | operator!= 测试两个列表是否相等. |
3 | operator< 测试第一个列表是否小于其他列表. |
4 | operator< = 测试第一个列表是否小于或等于其他与否. |
5 | operator> 测试第一个列表是否大于其他列表. |
6 | operator>= 测试第一个列表是否大于或等于其他列表. |
7 | swap 交换两个清单的内容. |