欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > c++ std::forward_list使用笔记

c++ std::forward_list使用笔记

2025/3/1 21:30:21 来源:https://blog.csdn.net/jppdss/article/details/145919336  浏览:    关键词:c++ std::forward_list使用笔记

这里写目录标题

      • 1. 包含头文件
      • 2. 创建和初始化
      • 3. 添加元素
      • 4. 遍历元素
      • 5. 删除元素
      • 6. 其他常用操作
      • 7. 示例代码
      • 输出结果
      • 总结

std::forward_list 是 C++ 标准库中的一个单向链表容器。它只支持从头部到尾部的前向遍历,因此在某些场景下比 std::list 更加高效。以下是一些 std::forward_list 的基本使用方法:

1. 包含头文件

首先需要包含 <forward_list> 头文件:

#include <forward_list>
#include <iostream>

2. 创建和初始化

可以创建一个空的 std::forward_list,或者使用初始化列表进行初始化:

std::forward_list<int> list1; // 创建一个空的 forward_list
std::forward_list<int> list2 = {1, 2, 3, 4, 5}; // 使用初始化列表

3. 添加元素

由于 std::forward_list 是单向链表,只能在头部插入元素,或者在某些特定位置插入元素:

list1.push_front(10); // 在头部插入元素
list1.push_front(20); // 再次在头部插入元素

4. 遍历元素

可以使用范围 for 循环或迭代器来遍历 std::forward_list

// 使用范围 for 循环
for (const auto& elem : list2) {std::cout << elem << " ";
}
std::cout << std::endl;// 使用迭代器
for (auto it = list1.begin(); it != list1.end(); ++it) {std::cout << *it << " ";
}
std::cout << std::endl;

5. 删除元素

可以使用 pop_front() 删除头部的元素,或者使用 erase_after() 删除特定位置的元素:

list1.pop_front(); // 删除头部元素auto it = list2.before_begin(); // 获取第一个元素之前的位置
list2.erase_after(it); // 删除第一个元素

6. 其他常用操作

  • empty():检查链表是否为空。
  • clear():清空链表。
  • insert_after():在指定位置后插入元素。
if (!list1.empty()) {std::cout << "list1 is not empty" << std::endl;
}list1.clear(); // 清空链表auto it = list2.before_begin();
list2.insert_after(it, 100); // 在第一个元素之前插入 100

7. 示例代码

以下是一个完整的示例代码:

#include <forward_list>
#include <iostream>int main() {std::forward_list<int> list = {1, 2, 3, 4, 5};// 在头部插入元素list.push_front(0);// 遍历并打印元素for (const auto& elem : list) {std::cout << elem << " ";}std::cout << std::endl;// 删除第一个元素list.pop_front();// 再次遍历并打印元素for (const auto& elem : list) {std::cout << elem << " ";}std::cout << std::endl;// 在第二个元素之后插入 100auto it = list.begin();list.insert_after(it, 100);// 最终遍历并打印元素for (const auto& elem : list) {std::cout << elem << " ";}std::cout << std::endl;return 0;
}

输出结果

0 1 2 3 4 5 
1 2 3 4 5 
1 100 2 3 4 5 

总结

std::forward_list 是一个轻量级的单向链表容器,适合在需要频繁在头部插入或删除元素的场景中使用。由于它只支持前向遍历,因此在需要双向遍历的场景中,std::list 可能更为合适。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词