目录

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

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

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

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

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


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

支持单次读取和前进;即只能遍历一遍集合,并且只能向前跳转。
- 递增操作(Increment):++iter
- 解引用操作(Dereference):*iter
- 比较操作(Equality Comparable):iter1 == iter2、iter1 != iter2
- const支持:同时支持const和non-const迭代器,因为输入流不应该改变容器元素。

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

支持单次写入和前进;即只能遍历一遍集合,并且只能向前跳转。
- 递增操作(Increment):++iter
- 解引用操作(Dereference):*iter
- 引用操作(Reference):iter = val
- const支持:不支持const迭代器,因为输出流总是允许修改。

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

支持读取和写入,多次迭代,和向前跳转。
- 递增操作(Increment):++iter
- 解引用操作(Dereference and Reference):*iter、iter->member
- 比较操作(Equality Comparable):iter1 == iter2、iter1 != iter2
- const支持:同时支持const和non-const迭代器。

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

支持前向迭代器的所有操作,并支持向后跳转。
- 递减操作(Decrement):--iter
- const支持:同时支持const和non-const迭代器。

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

支持双向迭代器的所有操作,并支持随机跳转和算术运算。
- 递增操作(Increment):++iter
- 递减操作(Decrement):--iter
- 加法和减法操作(Arithmetic):iter + n、iter - n、iter1 - iter2
- 解引用操作(Dereference and Reference):*iter、iter->member、iter[n]
- 比较操作(Comparison):iter1 < iter2、iter1 > iter2、iter1 <= iter2、iter1 >= iter2
- const支持:同时支持const和non-const迭代器。

【介绍】C++五种迭代器的更多相关文章

  1. 【Redis的那些事 · 上篇】Redis的介绍、五种数据结构演示和分布式锁

    Redis是什么 Redis,全称是Remote Dictionary Service,翻译过来就是,远程字典服务. redis属于nosql非关系型数据库.Nosql常见的数据关系,基本上是以key ...

  2. C++五种迭代器之间的关系

    迭代器操作                      说明(1)所有迭代器p++                              后置自增迭代器++p                     ...

  3. iOS五种本地缓存数据方式

    iOS五种本地缓存数据方式   iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  4. 转:Windows Socket五种I/O模型

    原文转自:  Windows Socket五种I/O模型 Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模 ...

  5. Windows Socket五种I/O模型

    转载:http://www.cnblogs.com/tianzhiliang/archive/2010/08/31/1813637.html 如果你想在Windows平台上构建服务器应用,那么I/O模 ...

  6. socket编程五种模型

    客户端:创建套接字,连接服务器,然后不停的发送和接收数据. 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请求后,创建一个专门用于和该客户端通信的套 ...

  7. 五种js判断是否为整数(转)

    五种js判断是否为整数类型方式 作者:snandy 这篇文章主要介绍了五种JavaScript判断是否为整数类型方式,需要的朋友可以参考下   这篇看看如何判断为整数类型(Integer),JavaS ...

  8. RabbitMQ详解(三)------RabbitMQ的五种模式

    RabbitMQ详解(三)------RabbitMQ的五种模式 1.简单队列(模式) 上一篇文章末尾的实例给出的代码就是简单模式. 一个生产者对应一个消费者!!! pom.xml ​ 必须导入Rab ...

  9. Unix网络编程中的五种I/O模型_转

    转自:Unix网络编程中的的五种I/O模型 下面主要是把unp第六章介绍的五种I/O模型. 1. 阻塞I/O模型 例如UDP函数recvfrom的内核到应用层.应用层到内核的调用过程是这样的:首先把描 ...

  10. Windows Socket五种I/O模型——代码全攻略(转)

    Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...

随机推荐

  1. 剑指Offer2---------替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   重点: ...

  2. LeetCode 94. 二叉树的中序遍历()

    原题解 题目 约束 题解 方法一 class Solution { public: void inorder(TreeNode* root, vector<int>& res) { ...

  3. 关于Unity 图片队列存储以及出列导致内存溢出的解决方案

    图片虽然出列但是并没有销毁,所以..destroy !  

  4. sqlserver 生成随机值

    随机生成100以内的整数 select top 10 number,ceiling(rand(checksum(newid()))*100) from master.dbo.spt_valueswhe ...

  5. docker学习3

    docker的启动流程 docker run -t -i <name:tag> /bin/bash -t 把1个伪终端绑定到容器的标准输入 -i 保持容器的标准输入始终打开不关闭 启动流程 ...

  6. HAL层分析

    1. 安卓HAL模块基本 2. 定义hal层代码的5个特性 1)硬件抽象层具有与硬件的密切相关性. 2) 硬件抽象层具有与操作系统无关性. 3) 接口定义的功能应该包含硬件或者系统所需硬件支持的所有功 ...

  7. vite不能用@做为路径的解决方法

    vite创建vue3后,发现原来用@做为路径的不能用了,报错信息是 Internal server error: Failed to resolve import "@ 在网上查了一下资料, ...

  8. Trino Master OOM 排查记录

    背景 最近线上的 trino 集群 master 节点老是因为 OOM crash,我们注意到 trino crash 前集群正在运行的查询数量正常,不太像是因为并发查询数据太多导致的 OOM.遂配置 ...

  9. 三天吃透Spring Cloud面试八股文

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  10. 【备忘录】 主定理 Master Theorem (转载)

    备忘录 https://zhuanlan.zhihu.com/p/113406812