Cpp Standard Library 简明教程
C++ Library - <forward_list>
Introduction
正向列表是一个普遍使用的顺序容器。容器是一个保存相同类型数据的对象。正向列表容器被实现为单链表,因此它提供了对其数据的单向顺序访问。
正向列表不提供快速的随机访问,它只支持单向的顺序访问。正向列表允许在序列中的任何地方进行插入和删除操作,且时间为常量。
正向列表的元素可能散布在内存的不同块中。容器存储必要的信息以允许对数据进行顺序访问。正向列表可以在运行时根据需要从两端收缩或扩展。存储需求由内部分配器自动满足。
大小为零的正向列表也是有效的。在那种情况下,forward_list.begin() 和 forward_list.end() 指向同一位置。但调用 front() 的行为是不确定的。
Definition
以下是 <forward_list> 头文件中 std::forward_list 的定义
template < class T, class Alloc = allocator<T> > class forward_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 |
size_type |
size_t |
10 |
difference_type |
ptrdiff_t |
Functions from <forward_list>
以下是 <forward_list> 头文件的所有方法列表。
Constructors
Sr.No. |
Method & Description |
1 |
forward_list::forward_list 默认构造函数用零个元素构造一个空前置列表。 |
2 |
forward_list::forward_list 填充构造函数使用 n 个元素构造一个新的前置列表,并为前置列表的每个元素分配 val。 |
3 |
forward_list::forward_list 填充构造函数使用 n 个元素构造一个新的前置列表,并为前置列表的每个元素分配零值。 |
4 |
forward_list::forward_list 范围构造函数构造一个前置列表,其元素与 first 到 last 范围中的元素一样多。 |
5 |
forward_list::forward_list 复制构造函数构造一个前置列表,其中包含现有列表中的每个元素的副本。 |
6 |
forward_list::forward_list 移动构造函数使用其他内容构造一个前置列表,使用移动语义。 |
7 |
forward_list::forward_list 初始化列表构造函数根据初始化列表构造一个前置列表。 |
Destructor
Sr.No. |
Method & Description |
1 |
forward_list::~forward_list 通过释放其内存来销毁前置列表对象。 |
Member functions
Sr.No. |
Method & Description |
1 |
forward_list::assign 范围版本通过替换旧值来为前置列表分配新值。 |
2 |
forward_list::assign 填充版本通过替换旧值来为前置列表分配新值。 |
3 |
forward_list::assign 初始化器列表版本通过替换旧值来为前置列表分配新值。 |
4 |
forward_list::before_begin 返回一个随机访问迭代器,该迭代器指向前置列表的第一个元素前面的位置。 |
5 |
forward_list::begin 返回一个随机访问迭代器,该迭代器指向前置列表的第一个元素。 |
6 |
forward_list::cbefore_begin 返回一个常量随机访问迭代器,该迭代器指向前置列表第一个元素前面的位置。 |
7 |
forward_list::cbegin 返回一个常量随机访问迭代器,该迭代器指向前置列表的开头。 |
8 |
forward_list::cend 返回一个常量随机访问迭代器,该迭代器指向前置列表的末尾。 |
9 |
forward_list::clear 通过从前置列表中删除所有元素来销毁前置列表,并将前置列表的大小设为零。 |
10 |
forward_list::emplace_after 构造一个新元素,并将其插入到前置列表中的位置之后,并将前置列表的大小增加一。 |
11 |
forward_list::emplace_front 在 forward_list 的开头插入新元素,并将 forward_list 的大小增加 1。 |
12 |
forward_list::empty 测试 forward_list 是否为空。 |
13 |
forward_list::end 返回一个指向 forward_list 最后一个元素的随机访问迭代器。 |
14 |
forward_list::erase_after 根据位置从 forward_list 中删除单个元素。 |
15 |
forward_list::erase 根据范围从 forward_list 中删除元素范围。 |
16 |
forward_list::front 返回一个对 forward_list 第一个元素的引用。 |
17 |
forward_list::get_allocator 返回与 forward_list 关联的分配器 |
18 |
forward_list::insert_after 单个元素版本在 forward_list 的 position 位置之后插入新元素,从而扩展迭代器。 |
19 |
forward_list::insert_after 移动版本在 forward_list 的 position 位置之后插入新元素,从而扩展迭代器。 |
20 |
forward_list::insert_after 填充版本在 forward_list 的 position 位置之后插入新元素,从而扩展迭代器。 |
21 |
forward_list::insert_after 范围版本在 forward_list 的 position 位置之后插入新元素,从而扩展迭代器。 |
22 |
forward_list::insert_after 初始值列表版本在 forward_list 的 position 位置之后插入新元素,从而扩展迭代器。 |
23 |
forward_list::max_size 返回 forward_list 可以容纳的最大元素数。 |
24 |
forward_list::merge 将两个已排序的 forward_list 合并为一个。 |
25 |
forward_list::merge 移动版本将两个已排序的 forward_list 合并为一个。 |
26 |
forward_list::merge 比较函数将两个已排序的 forward_list 合并为一个。 |
27 |
forward_list::merge 比较函数移动版本通过使用移动语义将两个已排序的 forward_list 合并为一个。 |
28 |
forward_list::operator= 复制版本通过替换旧内容向 forward_list 分配新内容。 |
29 |
forward_list::operator= 移动版本通过替换旧内容向 forward_list 分配新内容。 |
30 |
forward_list::operator= 初始值设定器版本通过替换旧内容将新内容分配给正向列表。 |
31 |
forward_list::pop_front 移除正向列表中的第一个元素。 |
32 |
forward_list::push_front 复制版本在正向列表的开头插入新元素。 |
33 |
forward_list::push_front 移动版本在正向列表的开头插入新元素。 |
34 |
forward_list::remove 从正向列表中移除与值匹配的元素。 |
35 |
forward_list::remove_if 从正向列表中移除满足条件的元素。 |
36 |
forward_list::resize 改变正向列表的大小。 |
37 |
forward_list::resize 值版本改变正向列表的大小。 |
38 |
forward_list::reverse 反转正向列表中元素的顺序。 |
39 |
forward_list::sort 对正向列表的元素进行排序。 |
40 |
forward_list::sort 比较函数对正向列表中的元素进行排序。 |
41 |
forward_list::splice_after 将所有元素从正向列表传输到 *this。 |
42 |
forward_list::splice_after 移动版本使用 move 语义将所有元素从正向列表 x 传输到 *this。 |
43 |
forward_list::splice_after 单个元素将正向列表 x 中由迭代器 i 指向的元素传输到 *this。 |
44 |
forward_list::splice_after 单个元素移动版本使用 move 语义将正向列表 x 中由迭代器 i 指向的元素传输到 *this。 |
45 |
forward_list::splice_after 范围版本将 x 中从 first 到 last 范围内的元素传输到 *this。 |
46 |
forward_list::splice 范围和移动版本使用 move 语义将 x 中从 first 到 last 范围内的元素传输到 *this。 |
47 |
forward_list::swap 交换正向列表的内容和另一个正向列表 x 的内容。 |
48 |
forward_list::unique 移除正向列表中所有相邻的重复元素。 |
49 |
forward_list::unique 从 forward_list 中删除所有连续的重复元素。 |
Non-member overloaded functions
Sr.No. |
Method & Description |
1 |
[role="bare"]../cpp_standard_library/cpp_forward_list_operator_equal_to.html 测试两个 forward_list 是否相等。 |
2 |
operator!= 测试两个 forward_list 是否相等。 |
3 |
operator< 测试第一个 forward_list 是否小于其他 forward_list。 |
4 |
operator⇐ 测试第一个 forward_list 是否小于或等于其他 forward_list。 |
5 |
operator> 测试第一个 forward_list 是否大于其他 forward_list。 |
6 |
operator>= 测试第一个 forward_list 是否大于或等于其他 forward_list。 |
7 |
swap 交换两个 forward_list 的内容。 |