版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/qq_41855420,未经博主允许不得转载。 https://blog.csdn.net/qq_41855420/article/details/89765022
C++ forward_list 容器
定义于头文件 <forward_list>
,申明为 template< class T, class Allocator = std::allocator<T>> class forward_list;
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_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::pointer |
const_pointer | std::allocator_traits::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 移动元素 (公开成员函数) |
remove、remove_if | 移除满足特定标准的元素 (公开成员函数) |
reverse | 将该链表的所有元素的顺序反转 (公开成员函数) |
unique | 删除连续的重复元素 (公开成员函数) |
sort | 对元素进行排序 (公开成员函数) |