在C++标准模板库(STL)中,forward_list 是一个非常高效但常被忽视的容器。本教程将带你从零开始,全面掌握 C++ forward_list 的使用方法,无论你是编程小白还是有一定经验的开发者,都能轻松上手。
forward_list 是 C++11 引入的一个单向链表容器。与 list(双向链表)不同,forward_list 只能向前遍历,因此它占用的内存更少、性能更高,非常适合对内存敏感或需要频繁插入/删除操作的场景。

list 存储两个指针。不过要注意:forward_list 不支持反向遍历,也没有 size() 方法(因为计算大小需要遍历整个链表,违背了其设计初衷)。
首先,你需要包含头文件:
#include <forward_list>#include <iostream>// 空的 forward_liststd::forward_list<int> flist;// 初始化列表(C++11 起支持)std::forward_list<int> flist2 = {1, 2, 3, 4};// 拷贝构造std::forward_list<int> flist3(flist2);下面是一个完整的例子,展示如何插入、遍历和删除元素:
#include <iostream>#include <forward_list>int main() { // 创建一个 forward_list std::forward_list<int> numbers = {10, 20, 30}; // 在开头插入元素 numbers.push_front(5); // 使用 before_begin() 和 insert_after 插入到指定位置之后 auto it = numbers.begin(); // 指向 5 numbers.insert_after(it, 7); // 在 5 后插入 7 → {5, 7, 10, 20, 30} // 遍历并打印 std::cout << "当前元素: "; for (const auto& num : numbers) { std::cout << num << " "; } std::cout << std::endl; // 删除值为 10 的元素 numbers.remove(10); // 再次打印 std::cout << "删除 10 后: "; for (const auto& num : numbers) { std::cout << num << " "; } std::cout << std::endl; return 0;}输出结果:
当前元素: 5 7 10 20 30 删除 10 后: 5 7 20 30
flist.size()。如果需要知道元素个数,必须手动遍历计数。--it 或反向迭代器。作为一份 C++初学者指南,我们建议你在以下情况考虑使用 forward_list:
如果你需要双向遍历或经常访问末尾元素,建议使用 std::list;如果需要随机访问,则应选择 std::vector。
通过本篇 STL forward_list教程,你应该已经掌握了 forward_list 的基本用法和适用场景。虽然它不如 vector 那样常用,但在特定场合下,它是提升程序性能和节省内存的利器。
记住:选择合适的数据结构是写出高效 C++ 代码的关键一步。希望这篇关于 C++单向链表 的教程能为你打下坚实基础!
本文由主机测评网于2025-12-20发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210301.html