std::forward_list

来自cppreference.com
< cpp‎ | container
 
 
 
 
在标头 <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 是支持从容器中的任何位置快速插入和移除元素的容器。不支持快速随机访问。它实现为单链表,且实质上与其在 C 中的实现相比无任何开销。与 std::list 相比,此容器在不需要双向迭代时提供更好的存储空间效率。

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

std::forward_list 满足容器 (Container) (但不包括 size 成员函数,且 operator== 的复杂度始终为线性)、知分配器容器 (AllocatorAwareContainer) 序列容器 (SequenceContainer) 的要求。

模板形参

T - 元素的类型。
加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型是完整类型并满足可擦除 (Erasable) 的要求,但许多成员函数附带了更严格的要求。 (C++17 前)

加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型满足可擦除 (Erasable) ,但许多成员函数附带了更严格的要求。如果分配器满足分配器完整性,那么容器(注意不是容器成员)能以不完整的元素类型实例化。

功能特性测试 标准 功能特性
__cpp_lib_incomplete_container_elements 201505L (C++17) 最低限度支持不完整类型
(C++17 起)

Allocator - 用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 。如果 Allocator::value_typeT 不同,那么行为未定义 (C++20 前)程序非良构 (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 指向 value_type 的常老式向前迭代器 (LegacyForwardIterator)
const_iterator 指向 const value_type老式向前迭代器 (LegacyForwardIterator)

成员函数

构造 forward_list
(公开成员函数)
析构 forward_list
(公开成员函数)
将值赋给容器
(公开成员函数)
将值赋给容器
(公开成员函数)
将一个范围的值赋给容器
(公开成员函数)
返回关联的分配器
(公开成员函数)
元素访问
访问第一个元素
(公开成员函数)
迭代器
返回指向容器开头之前的迭代器
(公开成员函数)
返回指向起始的迭代器
(公开成员函数)
返回指向末尾的迭代器
(公开成员函数)
容量
检查容器是否为空
(公开成员函数)
返回可容纳的最大元素数
(公开成员函数)
修改器
清除内容
(公开成员函数)
在某个元素后插入新元素
(公开成员函数)
在元素后原位构造元素
(公开成员函数)
插入元素范围到元素后
(公开成员函数)
擦除元素后的元素
(公开成员函数)
插入元素到容器起始
(公开成员函数)
在容器头部原位构造元素
(公开成员函数)
添加元素的范围到起始
(公开成员函数)
移除首元素
(公开成员函数)
改变存储元素的个数
(公开成员函数)
交换内容
(公开成员函数)
操作
合并两个有序列表
(公开成员函数)
从另一 forward_list 移动元素
(公开成员函数)
移除满足特定标准的元素
(公开成员函数)
反转元素的顺序
(公开成员函数)
删除连续的重复元素
(公开成员函数)
对元素进行排序
(公开成员函数)

非成员函数

(C++11)(C++11)(C++20 中移除)(C++11)(C++20 中移除)(C++11)(C++20 中移除)(C++11)(C++20 中移除)(C++11)(C++20 中移除)(C++20)
按照字典顺序比较两个 forward_list 的值
(函数模板)
特化 std::swap 算法
(函数模板)
擦除所有满足特定判别标准的元素
(函数模板)

推导指引

(C++17 起)

注解

功能特性测试 标准 功能特性
__cpp_lib_containers_ranges 202202L (C++23) 容器的范围构造和插入操作

示例

参阅

双链表
(类模板)