C++ 容器 <forward_list>
·
C++ 标准库中的 <forward_list> 是一种容器,它提供了一种单向链表的数据结构。与双向链表(std::list)不同,std::forward_list 只支持单向遍历。它适用于需要频繁进行前向遍历和插入、删除操作的场景。以下是对 std::forward_list 的详细说明:
单向链表:
std::forward_list是单向链表,只能从前往后遍历,不能反向遍历。- 由于其单向链表的结构,插入和删除操作在已知位置的情况下非常高效(O(1) 复杂度)。
低内存开销:
- 与
std::list相比,std::forward_list只需要一个指向下一个节点的指针,节省了内存。
不支持随机访问:
- 不支持通过索引访问元素,不能使用
operator[]或at方法,只能通过迭代器进行访问
| 容器 | 数据结构 | 随机访问(at()) |
原因 |
|---|---|---|---|
std::list |
双向链表 | 支持(O (n)) | 可双向遍历,虽不高效,但标准提供接口以满足灵活访问需求。 |
std::forward_list |
单向链表 | 不支持 | 仅单向遍历,设计目标是轻量化和单向操作,避免提供低效的随机访问接口。 |
语法
std::forward_list 是 C++ 标准库中的一个模板类,定义在 <forward_list> 头文件中。它使用模板参数 T 来指定存储在列表中的元素类型。
以下是 std::forward_list 的基本语法:
#include <forward_list> std::forward_list<T> list;
常用成员函数
void push_front(const T& value):在列表的前端插入一个元素。void pop_front():移除列表前端的元素。iterator before_begin():返回指向列表前端之前的迭代器。iterator begin():返回指向列表前端的迭代器。iterator end():返回指向列表末尾的迭代器。
实例
#include <iostream>
#include <forward_list>
int main() {
std::forward_list<int> lst1;
// 在列表前端添加元素
lst1.push_front(10);
lst1.push_front(20);
lst1.push_front(30);
for(auto it =lst1.begin();it != lst1.end(); it++)
{
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
std::forward_list 是 C++ 标准库中一个非常有用的容器,特别适合于需要在列表前端进行频繁插入和删除操作的场景。虽然它不支持随机访问,但在某些情况下,它的性能优势可以弥补这一不足
更多推荐


所有评论(0)