跳到主要内容

定义于: <forward_list>

注意

请注意,本文尚未完成!您可以通过编辑此文档页面来提供帮助。

概述

template< class T, /* .. */ >
class forward_list;

前向列表是一个支持在容器中任意位置快速插入和删除元素的容器。

前向列表的技术定义

std::forward_list是一个支持在容器中任意位置快速插入和删除元素的容器。

重要

不支持快速随机访问。

它被实现为单向链表。与std::list相比,当不需要双向迭代时,此容器提供更节省空间的存储。

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

std::forward_list满足Container(除了size成员函数和operator==的复杂度总是线性的)、AllocatorAwareContainerSequenceContainer的要求。

std::forward_list

定义于forward_list

模板参数

有关更多详细信息,请参阅技术细节

pubT元素的类型。
pubAllocator

用于获取/释放内存并在该内存中构造/销毁元素的分配器。

类型名称

pubvalue_typeT
puballocator_typeAllocator
pubsize_type无符号整型(通常是std::size_t
pubdifference_type有符号整型(通常是std::ptrdiff_t
pubreferencevalue_type&
pubconst_referencevalue_type const&
pubpointerAllocator::pointer (直到 C++11)
std::allocator_traits<Allocator>::pointer (自 C++11 起)
pubconst_pointerAllocator::const_pointer (直到 C++11)
std::allocator_traits<Allocator>::const_pointer (自 C++11 起)
pubiterator

LegacyForwardIteratorvalue_type 

pubconst_iterator

LegacyForwardIteratorconst value_type 

成员函数

pub(构造函数)

构造一个向量。

pub(析构函数)

销毁向量,如果使用则释放内部存储。

puboperator=

将值分配给容器。

pubassign

将值分配给容器。

pubget_allocator

返回关联的分配器。

元素访问

pubfront

访问第一个元素。

迭代器

pubbefore_begin
cbefore_begin

返回指向起始元素之前的iterator/const_iterator

pubbegin
cbegin

返回指向起始元素的iterator/const_iterator

pubend
cend

返回指向结束元素的iterator/const_iterator

容量

pubempty

如果列表为空,则返回true,否则返回false

pubmax_size

返回最大可能的元素数量。

修饰符

pubclear

清空内容。

pubinsert_after

在元素之后插入元素。

pubemplace_after

在元素之后就地构造元素。

puberase_after

在元素之后擦除一个元素。

pubpush_front

在开头插入一个元素。

pubemplace_front

在开头就地构造一个元素。

pubpop_front

移除第一个元素。

pubresize

更改存储的元素数量。

pubswap

交换内容。

操作

pubmerge

合并两个已排序的列表。

pubsplice_after

从另一个前向列表移动元素。

pubremove
remove_if

移除满足特定条件的元素。

pubreverse

反转元素的顺序。

pubunique

移除连续的重复元素。

pubsort

排序元素。

非成员函数

puboperator==
operator!= (在 C++20 中移除)
operator< (在 C++20 中移除)
operator> (在 C++20 中移除)
operator<= (在 C++20 中移除)
operator>= (在 C++20 中移除)
operator<=> (自 C++20 起)
按字典顺序比较列表中的值。
pubstd::swap (std::forward_list)std::swap 算法的重载。
puberase (std::forward_list)
erase_if (std::forward_list)
std::erase/std::erase_if 算法的重载。

推导指南 (C++17 起)

点击展开

推导指南

// (1)
template< class InputIt,
class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>>
forward_list(InputIt, InputIt, Alloc = Alloc())
-> forward_list<typename std::iterator_traits<InputIt>::value_type, Alloc>;

(1) 允许从**迭代器范围**进行推导。

重载决议

为了使任何推导指南参与重载决议,必须满足以下要求

注意

库确定类型不满足 LegacyInputIterator 的程度是未指定的,但至少

  • 整型不符合输入迭代器的条件。

同样,它确定类型不满足 Allocator 的程度是未指定的,但至少

示例

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

本文源自此 CppReference 页面。它可能为了改进或编辑者的偏好而进行了修改。点击“编辑此页面”可查看对本文档进行的所有更改。
悬停查看原始许可证。

定义于: <forward_list>

注意

请注意,本文尚未完成!您可以通过编辑此文档页面来提供帮助。

概述

template< class T, /* .. */ >
class forward_list;

前向列表是一个支持在容器中任意位置快速插入和删除元素的容器。

前向列表的技术定义

std::forward_list是一个支持在容器中任意位置快速插入和删除元素的容器。

重要

不支持快速随机访问。

它被实现为单向链表。与std::list相比,当不需要双向迭代时,此容器提供更节省空间的存储。

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

std::forward_list满足Container(除了size成员函数和operator==的复杂度总是线性的)、AllocatorAwareContainerSequenceContainer的要求。

std::forward_list

定义于forward_list

模板参数

有关更多详细信息,请参阅技术细节

pubT元素的类型。
pubAllocator

用于获取/释放内存并在该内存中构造/销毁元素的分配器。

类型名称

pubvalue_typeT
puballocator_typeAllocator
pubsize_type无符号整型(通常是std::size_t
pubdifference_type有符号整型(通常是std::ptrdiff_t
pubreferencevalue_type&
pubconst_referencevalue_type const&
pubpointerAllocator::pointer (直到 C++11)
std::allocator_traits<Allocator>::pointer (自 C++11 起)
pubconst_pointerAllocator::const_pointer (直到 C++11)
std::allocator_traits<Allocator>::const_pointer (自 C++11 起)
pubiterator

LegacyForwardIteratorvalue_type 

pubconst_iterator

LegacyForwardIteratorconst value_type 

成员函数

pub(构造函数)

构造一个向量。

pub(析构函数)

销毁向量,如果使用则释放内部存储。

puboperator=

将值分配给容器。

pubassign

将值分配给容器。

pubget_allocator

返回关联的分配器。

元素访问

pubfront

访问第一个元素。

迭代器

pubbefore_begin
cbefore_begin

返回指向起始元素之前的iterator/const_iterator

pubbegin
cbegin

返回指向起始元素的iterator/const_iterator

pubend
cend

返回指向结束元素的iterator/const_iterator

容量

pubempty

如果列表为空,则返回true,否则返回false

pubmax_size

返回最大可能的元素数量。

修饰符

pubclear

清空内容。

pubinsert_after

在元素之后插入元素。

pubemplace_after

在元素之后就地构造元素。

puberase_after

在元素之后擦除一个元素。

pubpush_front

在开头插入一个元素。

pubemplace_front

在开头就地构造一个元素。

pubpop_front

移除第一个元素。

pubresize

更改存储的元素数量。

pubswap

交换内容。

操作

pubmerge

合并两个已排序的列表。

pubsplice_after

从另一个前向列表移动元素。

pubremove
remove_if

移除满足特定条件的元素。

pubreverse

反转元素的顺序。

pubunique

移除连续的重复元素。

pubsort

排序元素。

非成员函数

puboperator==
operator!= (在 C++20 中移除)
operator< (在 C++20 中移除)
operator> (在 C++20 中移除)
operator<= (在 C++20 中移除)
operator>= (在 C++20 中移除)
operator<=> (自 C++20 起)
按字典顺序比较列表中的值。
pubstd::swap (std::forward_list)std::swap 算法的重载。
puberase (std::forward_list)
erase_if (std::forward_list)
std::erase/std::erase_if 算法的重载。

推导指南 (C++17 起)

点击展开

推导指南

// (1)
template< class InputIt,
class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>>
forward_list(InputIt, InputIt, Alloc = Alloc())
-> forward_list<typename std::iterator_traits<InputIt>::value_type, Alloc>;

(1) 允许从**迭代器范围**进行推导。

重载决议

为了使任何推导指南参与重载决议,必须满足以下要求

注意

库确定类型不满足 LegacyInputIterator 的程度是未指定的,但至少

  • 整型不符合输入迭代器的条件。

同样,它确定类型不满足 Allocator 的程度是未指定的,但至少

示例

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

本文源自此 CppReference 页面。它可能为了改进或编辑者的偏好而进行了修改。点击“编辑此页面”可查看对本文档进行的所有更改。
悬停查看原始许可证。