Namespaces
Variants

std:: forward_list

From cppreference.net
定义于头文件 <forward_list>
template <

class T,
class Allocator = std:: allocator < T >

> class forward_list ;
(1) (C++11 起)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (C++17 起)

std::forward_list 是一种支持在容器任意位置快速插入和删除元素的容器。不支持快速随机访问。它被实现为单向链表。与 std::list 相比,在不需要双向迭代时,该容器能提供更节省空间的存储方式。

在列表内或跨多个列表添加、删除和移动元素时,不会使当前指向列表中其他元素的迭代器失效。然而,当相应元素从列表中移除时(通过 erase_after ),指向该元素的迭代器或引用将失效。

std::forward_list 满足 容器 (除 size 成员函数以及 operator== 的复杂度始终为线性外)、 分配器感知容器 顺序容器 的要求。

std::forward_list 的所有成员函数都是 constexpr :可以在常量表达式求值中创建和使用 std::forward_list 对象。

然而, std::forward_list 对象通常不能是 constexpr ,因为任何动态分配的存储必须在同一常量表达式求值中释放。

(since C++26)

目录

模板参数

T - 元素类型。
对元素的要求取决于容器实际执行的操作。通常要求元素类型为完整类型并满足 Erasable 要求,但许多成员函数会施加更严格的要求。 (C++17 前)

对元素的要求取决于容器实际执行的操作。通常要求元素类型满足 Erasable 要求,但许多成员函数会施加更严格的要求。若分配器满足 分配器完整性要求 ,则可以使用不完整元素类型实例化此容器(但非其成员)。

功能测试宏 标准 功能
__cpp_lib_incomplete_container_elements 201505L (C++17) 最小不完整类型支持
(C++17 起)

Allocator - 用于获取/释放内存及在其中构造/销毁元素的分配器。该类型必须满足 Allocator 要求。 Allocator::value_type T 不同则行为未定义 (C++20 前) Allocator::value_type T 不同则程序非良构 (C++20 起)

成员类型

成员类型 定义
value_type T
allocator_type Allocator
size_type 无符号整数类型(通常为 std::size_t
difference_type 有符号整数类型(通常为 std::ptrdiff_t
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator ConstexprIterator (since C++26) 指向 value_type
const_iterator LegacyForwardIterator ConstexprIterator (since C++26) 指向 const value_type

成员函数

构造 forward_list
(公开成员函数)
析构 forward_list
(公开成员函数)
为容器赋值
(公开成员函数)
为容器赋值
(公开成员函数)
为容器赋值一个值范围
(公开成员函数)
返回关联的分配器
(公开成员函数)
元素访问
访问第一个元素
(公开成员函数)
迭代器
返回到起始元素之前的迭代器
(公开成员函数)
返回到起始位置的迭代器
(公开成员函数)
返回到末尾位置的迭代器
(公开成员函数)
容量
检查容器是否为空
(公开成员函数)
返回可容纳的最大元素数
(公开成员函数)
修改器
清除内容
(公开成员函数)
在元素后插入元素
(公开成员函数)
在元素后原位构造元素
(公开成员函数)
在元素后插入元素范围
(公开成员函数)
擦除元素后的元素
(公开成员函数)
在起始位置插入元素
(公开成员函数)
在起始位置原位构造元素
(公开成员函数)
在起始位置添加元素范围
(公开成员函数)
移除第一个元素
(公开成员函数)
改变存储的元素数量
(公开成员函数)
</div

非成员函数

(C++11) (C++11) (removed in C++20) (C++11) (removed in C++20) (C++11) (removed in C++20) (C++11) (removed in C++20) (C++11) (removed in C++20) (C++20)
按字典序比较两个 forward_list 的值
(函数模板)
特化 std::swap 算法
(函数模板)
擦除所有满足特定条件的元素
(函数模板)

推导指引

(C++17 起)

注释

功能测试 标准 功能
__cpp_lib_containers_ranges 202202L (C++23) 容器的范围构造与插入
__cpp_lib_constexpr_forward_list 202502L (C++26) constexpr std::forward_list

示例

参见

双向链表
(类模板)