C++ 库 - <forward_list>


介绍

forward_list 是一种常用的序列容器。容器是保存相同类型数据的对象。forward_list 容器被实现为单链表,因此它提供对其数据的单向顺序访问。

forward_list 不提供快速随机访问,它只支持一个方向的顺序访问。forward_list 允许在恒定时间内在序列中的任何位置进行插入和删除操作。

forward_list 的元素可以分散在不同的内存块中。容器存储必要的信息以允许顺序访问其数据。forward_lists 可以在运行时根据需要从两端收缩或扩展。存储要求由内部分配器自动满足。

零大小的前向列表也是有效的。在这种情况下,forward_list.begin()和forward_list.end()指向相同的位置。但是调用 front() 的Behave是未定义的。

定义

以下是 <forward_list> 头文件中 std::forward_list 的定义

template < class T, class Alloc = allocator<T> > class forward_list;

参数

  • T - 所包含元素的类型。

    T 可以替换为任何其他数据类型,包括用户定义的类型。

  • Alloc - 分配器对象的类型。

    默认情况下,使用分配器类模板,它定义了最简单的内存分配模型,并且与值无关。

会员类型

以下成员类型可以用作成员函数的参数或返回类型。

先生。 会员类型 定义
1 值类型 T(模板的第一个参数)
2 分配器类型 Alloc(模板的第二个参数)
3 参考 值类型&
4 常量引用 常量值类型&
5 指针 值类型*
6 常量指针 常量值类型*
7 迭代器 value_type 的随机访问迭代器
8 常量迭代器 const value_type 的随机访问迭代器
9 尺码类型 尺寸_t
10 差异类型 ptrdiff_t

来自 <forward_list> 的函数

下面是 <forward_list> 标头中所有方法的列表。

构造函数

先生。 方法及说明
1 forward_list::forward_list 默认构造函数

构造一个具有零个元素的空的forward_list。

2 forward_list::forward_list 填充构造函数

构造一个包含n 个元素的新的forward_list,并将val分配给forward_list 的每个元素。

3 forward_list::forward_list 填充构造函数

构造一个具有n 个元素的新的forward_list,并将零值分配给forward_list 的每个元素。

4 forward_list::forward_list 范围构造函数

构造一个forward_list,其元素数量与firstlast范围内的元素数量相同。

5 forward_list::forward_list 复制构造函数

使用现有列表中存在的每个元素的副本构造一个forward_list。

6 forward_list::forward_list 移动构造函数

使用移动语义用other的内容构造一个forward_list 。

7 forward_list::forward_list 初始值设定项列表构造函数

从初始化列表构造一个forward_list。

析构函数

先生。 方法及说明
1 转发列表::~转发列表

通过释放内存来销毁forward_list对象。

会员功能

先生。 方法及说明
1 forward_list::分配 范围版本

通过替换旧值将新值分配给forward_list。

2 forward_list::分配 填充版本

通过替换旧值将新值分配给forward_list。

3 forward_list::分配 初始值设定项列表版本

通过替换旧值将新值分配给forward_list。

4 前向列表::开始之前

返回一个随机访问迭代器,它指向forward_list的第一个元素之前的位置。

5 转发列表::开始

返回一个随机访问迭代器,它指向forward_list的第一个元素。

6 前向列表::cbefore_begin

返回一个常量随机访问迭代器,它指向forward_list第一个元素之前的位置。

7 转发列表::cbegin

返回一个常量随机访问迭代器,它指向forward_list的开头。

8 转发列表::cend

返回一个指向forward_list末尾的常量随机访问迭代器。

9 转发列表::清除

通过从forward_list中删除所有元素来销毁forward_list,并将forward_list的大小设置为零。

10 前向列表::emplace_after

在forward_list中的位置之后构造并插入新元素,并将forward_list的大小增加一。

11 前向列表::emplace_front

在forward_list的开头插入新元素并将forward_list的大小增加一。

12 转发列表::空

测试forward_list是否为空。

13 转发列表::结束

返回一个随机访问迭代器,它指向forward_list的最后一个元素。

14 forward_list::erase_after位置版本

从forward_list中删除位置后的单个元素。

15 forward_list::擦除范围版本

从forward_list 中删除元素范围。

16 转发列表::前面

返回对forward_list的第一个元素的引用。

17 号 转发列表::获取分配器

返回与forward_list关联的分配器

18 forward_list::insert_after 单元素版本

通过在forward_list中的位置之后插入新元素来扩展迭代器

19 forward_list::insert_after 移动版本

通过在forward_list中的位置之后插入新元素来扩展迭代器

20 forward_list::insert_after 填充版本

通过在forward_list中的位置之后插入新元素来扩展迭代器

21 forward_list::insert_after 范围版本

通过在forward_list中的位置之后插入新元素来扩展迭代器

22 forward_list::insert_after 初始值设定项列表版本

通过在forward_list中的位置之后插入新元素来扩展迭代器

23 转发列表::最大大小

返回forward_list可以容纳的最大元素数。

24 转发列表::合并

将两个已排序的前向列表合并为一个。

25 forward_list::合并 移动版本

将两个已排序的前向列表合并为一个。

26 forward_list::合并 比较函数

将两个已排序的前向列表合并为一个。

27 forward_list::merge 比较函数移动版本

使用移动语义将两个已排序的前向列表合并为一个。

28 forward_list::operator= 复制版本

通过替换旧内容将新内容分配给forward_list。

29 forward_list::operator= 移动版本

通过替换旧内容将新内容分配到forward_list。

30 forward_list::operator= 初始化列表版本

通过替换旧内容将新内容分配到forward_list。

31 转发列表::pop_front

从forward_list 中删除第一个元素。

32 forward_list::push_front 复制版本

在forward_list 的开头插入新元素。

33 forward_list::push_front 移动版本

在forward_list 的开头插入新元素。

34 转发列表::删除

从forward_list 中删除与该值匹配的元素。

35 转发列表::删除如果

从forward_list中删除满足条件的元素。

36 转发列表::调整大小

更改forward_list 的大小。

37 forward_list::调整 值版本

更改forward_list 的大小。

38 正向列表::反向

反转forward_list 中元素的顺序。

39 转发列表::排序

对forward_list 的元素进行排序。

40 forward_list::排序 比较函数

对forward_list 的元素进行排序。

41 前向列表::拼接后

将所有元素从forward_list转移到*this。

42 forward_list::splice_after 移动版本

使用移动语义将所有元素从forward_list x转移到*this 。

43 forward_list::splice_after 单个元素

将迭代器i指向的元素从forward_list x传输到*this

44 forward_list::splice_after 单元素移动版本

使用移动语义将迭代器i指向的元素从forward_list x转移到*this中。

45 forward_list::splice_after 范围版本

将x第一个最后一个范围内的元素传输到* this

46 forward_list::拼接 范围和移动版本

使用移动语义将第一个最后一个范围内的元素从x转移到*this 。

47 转发列表::交换

将一个forward_list 的内容与另一个forward_list x的内容交换。

48 转发列表::唯一

从forward_list中删除所有连续的重复元素。

49 转发列表::唯一

从forward_list中删除所有连续的重复元素。

非成员重载函数

先生。 方法及说明
1 运算符==

测试两个前向列表是否相等。

2 运算符!=

测试两个前向列表是否相等。

3 运算符<

测试第一个forward_list是否小于其他。

4 运算符<=

测试第一个forward_list是否小于或等于其他。

5 运算符>

测试第一个forward_list是否大于其他。

6 运算符>=

测试第一个forward_list是否大于或等于其他。

7 交换

交换两个forward_list 的内容。