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

  1. T − 包含元素的类型。T 可以用包括用户自定义类型在内的任何其他数据类型替换。

  2. 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 的内容。