C++ STL容器之forward_list

版权声明:本文为博主原创文章,博客地址: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 - 元素的类型。

  1. 加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型是完整类型并满足可擦除 (Erasable)
    的要求,但许多成员函数附带了更严格的要求。 (C++17 前)
  2. 加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型满足可擦除 (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 对元素进行排序 (公开成员函数)

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/89765022