C++ std::forward_list容器的用法(附带实例)
forward_list 容器定义在 <forward_list> 头文件中,并位于命名空间 std 中。因此,使用该容器前需先引入 <forward_list> 头文件,并使用 std 命令空间:
与 list 对象相似,forward_list 对象的创建方法也有 5 种:
1) 创建空的 forward_list 对象,语法格式如下:
2) 创建一个大小为 size 的 forward_list 对象,语法格式如下:
3) 创建一个大小为 size 的 forward_list 对象,并将各元素值初始化为 value,语法格式如下:
4) 使用复制构造函数,通过已有的 forward_list 对象创建新的对象,语法格式如下:
5) 创建元素在指定范围内的链表,first 代表起始位置,last 代表结束位置,语法格式如下:
forward_list 容器的成员函数见下表:
下面的代码中演示了一些 forward_list 容器的成员函数用法:
#include <forward_list> using namespace std;
与 list 对象相似,forward_list 对象的创建方法也有 5 种:
1) 创建空的 forward_list 对象,语法格式如下:
std::forward_list<type> name;例如,创建一个可容纳 int 型元素的空对象 intlist,代码如下:
std::forward_list<int> intlist;
2) 创建一个大小为 size 的 forward_list 对象,语法格式如下:
std::forward_list <type> name(size);
3) 创建一个大小为 size 的 forward_list 对象,并将各元素值初始化为 value,语法格式如下:
std::forward_list <type> name(size,value);
4) 使用复制构造函数,通过已有的 forward_list 对象创建新的对象,语法格式如下:
std::forward_list <type> name(mylist);
5) 创建元素在指定范围内的链表,first 代表起始位置,last 代表结束位置,语法格式如下:
std::forward_list <type> name(first,last);
forward_list 容器的成员函数见下表:
函数 | 说明 |
---|---|
begin() | 返回指向序列第一个元素的迭代器 |
end() | 返回指向序列最后一个元素的迭代器 |
before_begin() | 返回指向第一个元素前面一个位置的迭代器 |
cbegin() | 与begin()类似,但增加了const属性,不能修改元素的值 |
cend() | 与end()类似,但增加了const属性,不能修改元素的值 |
cbefore_begin() | 与before_begin()类似,但增加了const属性,不能修改元素的值 |
assign() | 用新元素替换原有内容 |
operator=() | 复制同类型容器的元素,或者用初始化列表替换现有内容 |
max_size() | 返回 STL 允许的最大容量,一般为 2^32-1,该函数很少用到 |
resize() | 重新设定序列的大小 |
empty() | 判断序列是否为空。如果为空,返回 true;否则返回 false |
front() | 返回对序列第一个元素的引用 |
push_front() | 在序列起始位置添加一个元素 |
emplace_after() | 在指定位置的后面生成一个元素 |
emplace_front() | 在序列的起始位置生成一个元素 |
insert_after() | 在指定位置的后面插入一个或多个元素 |
pop_front() | 移除序列头部的元素 |
reverse() | 反转某一段元素 |
erase_after() | 移除指定位置后面的一个元素或一段元素 |
remove() | 移除所有和参数匹配的元素 |
remove_if() | 移除满足函数条件的所有元素 |
unique() | 移除所有连续重复的元素 |
clear() | 移除所有的元素,序列大小变为 0 |
swap() | 交换两个序列的所有元素 |
sort() | 对元素进行排序 |
merge() | 合并两个有序序列 |
splice_after() | 移动指定位置后面的所有元素到另一个同类型的 list 中 |
下面的代码中演示了一些 forward_list 容器的成员函数用法:
#include <iostream> #include <forward_list> using namespace std; int main() { std::forward_list<int> values = {1, 2, 3}; // 创建一个 forward_list,初始为 [1, 2, 3] values.emplace_front(4); // 在序列起始位置生成新元素 4,此时序列为 [4, 1, 2, 3] values.emplace_after(values.before_begin(), 5); // 在序列起始位置生成新元素 5,此时序列为 [5, 4, 1, 2, 3] values.reverse(); // 反转 values,此时元素序列为 [3, 2, 1, 4, 5] for (auto it = values.begin(); it != values.end(); ++it) { cout << *it << " "; } return 0; }运行结果为:
3 2 1 4 5