当前位置: 首页 > news >正文

【C++】迭代器

迭代器的类型

(1) 输入迭代器(Input Iterator)

  • 功能:只能单向遍历(前向),且只能读取元素(不能修改)。

  • 特点:支持 ++(前置和后置)和 *(解引用),但不支持多次遍历。

  • 示例:C++ 中的 istream_iterator

(2) 输出迭代器(Output Iterator)

  • 功能:只能单向遍历(前向),且只能写入元素(不能读取)。

  • 特点:支持 ++ 和 *(仅用于赋值),但不保证能重复遍历。

  • 示例:C++ 中的 ostream_iterator

(3) 前向迭代器(Forward Iterator)

  • 功能:单向遍历(前向),可读写元素。

  • 特点:支持多次遍历(可保存迭代器状态)。

  • 示例:C++ 中单向链表的迭代器(如 std::forward_list)。

(4) 双向迭代器(Bidirectional Iterator)

  • 功能:支持前向和后向遍历(++ 和 --),可读写元素。

  • 特点:比前向迭代器更灵活。

  • 示例:C++ 中 std::liststd::set 的迭代器。

(5) 随机访问迭代器(Random Access Iterator)

  • 功能:支持直接跳转到任意位置(如 +n-n),类似指针操作。

  • 特点:最高效的迭代器,支持所有指针算术运算(<>[] 等)。

  • 示例:C++ 中 std::vectorstd::deque 的迭代器。

C++ 中的迭代器兼容性

C++ 的迭代器分为 5 个类别(从低到高):

  1. 输入迭代器(Input Iterator)(只读,单次遍历)

  2. 输出迭代器(Output Iterator)(只写,单次遍历)

  3. 前向迭代器(Forward Iterator)(可读写,可多次遍历)

  4. 双向迭代器(Bidirectional Iterator)(支持 ++ 和 --

  5. 随机访问迭代器(Random Access Iterator)(支持 +n-n[]

兼容性规则

  • 高类别迭代器可以替代低类别迭代器(如 随机访问迭代器 可以当作 双向迭代器 使用)。

  • 低类别迭代器不能替代高类别迭代器(如 双向迭代器 不能用于 std::sort,因为它需要 随机访问迭代器)。

http://www.dtcms.com/a/282931.html

相关文章:

  • 第五章 管道工程 5.4 管道安全质量控制
  • 【前端】HTML语义标签的作用与实践
  • 想删除表中重复数据,只留下一条,sql怎么写
  • 1688商品API全链路开发实践
  • Reddit Karma是什么?Post Karma和Comment Karma的提升指南
  • 搭建基于Gitee文档笔记自动发布
  • 达梦数据库配置兼容MySQL
  • Vue + Element UI 实现单选框
  • [特殊字符] 第1篇:什么是SQL?数据库是啥?我能吃吗?
  • LeafletJS 进阶:GeoJSON 与动态数据可视化
  • UI测试平台TestComplete:关键字驱动测试技巧
  • 【ArcGISPro】修改conda虚拟安装包路径
  • Mybatis的SQL编写—XML方式
  • 无人机EIS增稳技术要点分析
  • 牛客:HJ26 字符串排序[华为机考][map]
  • web:js提示框、询问框、输入框的使用
  • React 条件渲染完全指南
  • 题解:P13256 [GCJ 2014 #2] Data Packing
  • 新版本Cursor中配置自定义MCP服务器教程,附MCP工具开发实战源码
  • 棱镜观察|比亚迪“全责兜底”智能泊车!“减配”风潮接踵而至
  • realsense应用--rs-distance(距离测量)
  • 中国旅行社协会在京召开“文旅人工智能应用研讨会”,助力文旅创新发展
  • 分块(chunked) vs 滑动窗口(windowed)
  • 【25-cv-07929】Keith携Lisa Audit向日葵画作发案
  • 性能测试过程中监控linux服务器资源情况
  • c语言常用的字符串函数简介概括
  • 【基于飞浆训练车牌识别模型】
  • 2.库操作
  • cookie和session、favicon.ico
  • 管家婆辉煌ERP登录报错:HTTP 错误 404.2