c++11 标准模板(STL)(std::forward_list)(一)

定义于头文件 <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) (除了 operator== 的复杂度始终为线性和 size 函数)、具分配器容器 (AllocatorAwareContainer) 和序列容器 (SequenceContainer) 的要求。

模板形参

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

Allocator-用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 的要求。若 Allocator::value_type 与 T 不同则行为未定义。

成员类型

成员类型定义
value_typeT
allocator_typeAllocator
size_type无符号整数类型(通常是 std::size_t )
difference_type有符号整数类型(通常是 std::ptrdiff_t )
referencevalue_type&
const_referenceconst value_type&
pointerstd::allocator_traits<Allocator>::pointer
const_pointerstd::allocator_traits<Allocator>::const_pointer
iterator遗留向前迭代器 (LegacyForwardIterator)
const_iterator常向前迭代器

成员函数

(构造函数)

构造 forward_list
(公开成员函数)

(析构函数)

析构 forward_list
(公开成员函数)

operator=

赋值给容器
(公开成员函数)

assign

将值赋给容器
(公开成员函数)

get_allocator

返回相关的分配器
(公开成员函数)

元素访问

front

访问第一个元素
(公开成员函数)

迭代器

before_begin cbefore_begin

返回指向第一个元素之前迭代器
(公开成员函数)

begin cbegin

返回指向容器第一个元素的迭代器
(公开成员函数)

end cend

返回指向容器尾端的迭代器
(公开成员函数)

容量

empty

检查容器是否为空
(公开成员函数)

max_size

返回可容纳的最大元素数
(公开成员函数)

修改器

clear

清除内容
(公开成员函数)

insert_after

在某个元素后插入新元素
(公开成员函数)

emplace_after

在元素后原位构造元素
(公开成员函数)

erase_after

擦除元素后的元素
(公开成员函数)

push_front

插入元素到容器起始
(公开成员函数)

emplace_front

在容器头部就地构造元素
(公开成员函数)

pop_front

移除首元素
(公开成员函数)

resize

改变容器中可存储元素的个数
(公开成员函数)

swap

交换内容
(公开成员函数)

操作

merge

合并二个已排序列表
(公开成员函数)

splice_after

从另一 forward_list 移动元素
(公开成员函数)

removeremove_if

移除满足特定标准的元素
(公开成员函数)

reverse

将该链表的所有元素的顺序反转
(公开成员函数)

unique

删除连续的重复元素
(公开成员函数)

sort

对元素进行排序
(公开成员函数)

非成员函数

operator==operator!=operator<operator<=operator>operator>=

按照字典顺序比较 forward_list 中的值
(函数模板)

std::swap(std::forward_list)

(C++11)

特化 std::swap 算法
(函数模板)

erase(std::forward_list)erase_if(std::forward_list)

(C++20)

擦除所有满足特定判别标准的元素
(函数模板)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值