一:迭代器原理

迭代器是一个“可遍历STL容器内全部或部分元素”的对象。
迭代器指出容器中的一个特定位置。
迭代器就如同一个指针。
迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范围。

二:迭代器类别

(一)输入迭代器

也有叫法称之为“只读迭代器”,它从容器中读取元素,只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列

(二)输出迭代器

也有叫法称之为“只写迭代器”,它往容器中写入元素,只能一次写入一个元素向前移动,只支持一遍算法,同一个输出迭代器不能两遍遍历一个序列

(三)正向迭代器

组合输入迭代器和输出迭代器的功能,还可以多次解析一个迭代器指定的位置,可以对一个值进行多次读/写

(四)双向迭代器

组合正向迭代器的功能,还可以通过--操作符向后移动位置

(五)随机访问迭代器

组合双向迭代器的功能,还可以向前向后跳过任意个位置,可以直接访问容器中任何位置的元素

注意:目前本系列教程所用到的容器,都支持双向迭代器或随机访问迭代器,下面将会详细介绍这两个类别的迭代器。

三:双向迭代器操作

it++,  ++it,    it--,   --it*it,itA = itB,itA == itB,itA != itB

四:其中list,set,multiset,map,multimap支持双向迭代器。

五:随机访问迭代器支持的操作

在双向迭代器的操作基础上添加it+=i, it-=i, it+i(或it=it+i),it[i],itA<itB,   itA<=itB,  itA>itB,  itA>=itB  的功能

六:其中vector,deque支持随机访问迭代器。

转载于:https://www.cnblogs.com/ssyfj/p/10791075.html

STL迭代器iterator相关推荐

  1. C++中的迭代器(STL迭代器)iterator

    1.Cpp中的迭代器 要访问顺序容器和关联容器中的元素,需要通过迭代器(iterator)进行.迭代器是一个变量,相当于容器和操纵容器的算法之间的中介.迭代器可以指向容器中的某个元素,通过迭代器就可以 ...

  2. STL源码剖析 迭代器iterator的概念 和 traits编程技法

    iterator模式定义如下:提供一种方法,使之能够依序巡访某个 聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式. STL的中心思想在于:将数据容器(containers)和算法(a ...

  3. STL迭代器(iterator)用法详解

    C++ STL迭代器(iterator)用法详解 无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实 ...

  4. mysql迭代器_迭代器是什么,C++ STL迭代器(iterator)用法详解

    无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实现.那么,迭代器到底是什么呢? 我们知道,尽管不同 ...

  5. C++:迭代器(STL迭代器)iterator详解

    STL迭代器 参考链接:http://c.biancheng.net/view/338.html

  6. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  7. stl clocklist 查找元素_剑指信奥 C++ 之 STL 迭代器(上)

    趣乐博思剑指信奥 C++ 系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试 ...

  8. 有指针为何还要STL迭代器

    指针和STL迭代器 1.迭代器 2.迭代器和指针的区别 3.迭代器产生原因 1.迭代器 Iterator(迭代器)模式又称 Cursor(游标)模式,用于提供一种方法顺序访问一个聚合 对象中各个元素, ...

  9. STL — 迭代器设计思维(一)

    迭代器设计思维 关于迭代器的基础原理和作用我以前有一个博客提到过:STL迭代器的原理以及迭代器失效 我不推荐不够了解迭代器的读者直接来看这个 博客,因为你会觉得我在做一些无意义的事情,并且理解上面也会 ...

最新文章

  1. Windows Azure平台Win VM密码重置
  2. 数据结构和算法分析: 红黑树
  3. python 文件操作的模块_Python之文件操作修改模块
  4. centos eclipse 安装
  5. spring websocket基于STOMP协议实现,apache httpd反向代理配置
  6. SpringBoot+webservice
  7. postgres数据库入门, python 操作postgres
  8. bea tuxedo中间件入门
  9. 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱代码分享
  10. 如何修改MySQL数据库密码
  11. Mybatis最拿得出手的功能之一 SpringBoot整合Mybatis-Plus 实战之动态SQL
  12. 湖南省衡阳市谷歌高清卫星地图下载
  13. Node的老大难问题:require和import
  14. ASP.NET MVC预览4-使用Ajax和Ajax.Form
  15. 我在大学所构建的技术体系
  16. 计算机存储有哪些类型,存储主要分为哪些类型
  17. Informatica的FTP功能如何使用|infa怎么实现ftp文件自动上传
  18. 在微信里点击链接无跳转
  19. 多张图片转换成PDF的必备办公技能
  20. java 三维旋转立方体_Canvas实现3D效果-可旋转的立方体

热门文章

  1. coap 返回版本信息_CoAP 协议解析说明(转)
  2. 字节跳动面试经验 php,双指针算法:字节跳动初级面试题 PHP
  3. html留言板代码_接口测试平台代码实现19.首页优化
  4. AcWing 1960. 闪烁(状态压缩+枚举)
  5. matlab空间球与空间圆求解,基于MATLAB的球管相贯空间曲线焊缝的数学模型
  6. android线给苹果充电,安卓的充电器可以给iPhone充电吗?这里给你答案
  7. git如何将远程仓库代码,覆盖本地代码
  8. JVM系列一:JVM内存组成及分配
  9. babel-preset-env
  10. Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解