http://blog.csdn.net/pipisorry/article/details/71156760

迭代器(iterators)迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。

迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据。你还可以使用其他数学操作符如++。典型的,++操作符用来递增迭代器,以访问容器中的下一个对象。如果迭代器到达了容器中的最后一个元素的后面,则迭代器变成past-the-end值。使用一个past-the-end值得指针来访问对象是非法的,就好像使用NULL或为初始化的指针一样。

Note: STL不保证可以从另一个迭代器来抵达一个迭代器。例如,当对一个集合中的对象排序时,如果你在不同的结构中指定了两个迭代器,第二个迭代器无法从第一个迭代器抵达,此时程序注定要失败。这是STL灵活性的一个代价。STL不保证检测毫无道理的错误。

迭代器的类型

对于STL数据结构和算法,你可以使用五种迭代器。下面简要说明了这五种类型:

·        Input iterators 提供对数据的只读访问。

·        Output iterators 提供对数据的只写访问

·        Forward iterators 提供读写操作,并能向前推进迭代器。

·        Bidirectional iterators提供读写操作,并能向前和向后操作。

·        Random access iterators提供读写操作,并能在数据中随机移动。

尽管各种不同的STL实现细节方面有所不同,还是可以将上面的迭代器想象为一种类继承关系。从这个意义上说,下面的迭代器继承自上面的迭代器。由于这种继承关系,你可以将一个Forward迭代器作为一个output或input迭代器使用。同样,如果一个算法要求是一个bidirectional 迭代器,那么只能使用该种类型和随机访问迭代器。

[using stl: 三十分钟掌握STL]

正向迭代

vector<string>::iterator gc_it;
for (gc_it = gray_code.begin(); gc_it != gray_code.end(); gc_it++)new_gray_code.push_back("0" + *gc_it);

反向迭代

vector<string>::reverse_iterator gc_rit;
for (gc_rit = gray_code.rbegin(); gc_rit != gray_code.rend(); gc_rit++)new_gray_code.push_back("1" + *gc_rit);

from: http://blog.csdn.net/pipisorry/article/details/71156760

ref:

C++:标准程序库-STL迭代器Iterator相关推荐

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

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

  2. STL迭代器iterator

    一:迭代器原理 迭代器是一个"可遍历STL容器内全部或部分元素"的对象. 迭代器指出容器中的一个特定位置. 迭代器就如同一个指针. 迭代器提供对一个容器中的对象的访问方法,并且可以 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 史上最‘牛’杀毒软件之麦咖啡
  2. 2021年高考英语卷三成绩查询,2021年全国3卷高考外语卷难不难,今年全国3卷高考外语卷难度系数点评...
  3. 洛谷——P1090 合并果子
  4. 飞鸽传书2008一种重要心态
  5. v-viewer图片打不开一直在刷新_python实现将一组图片转化成视频
  6. python二十四点_python实现24点游戏(地球上最短的24点游戏代码?)
  7. 在 Chrome 调试 Javascript
  8. 在手机里输入八卦及64卦符号(老年教程)
  9. swift1.2新增和改动
  10. JS 使用RSA加密解密
  11. Tapestry5 grid
  12. putty使用ssh登录时出现Access denied
  13. Intel 处理器型号数字和字母含义解析
  14. requests库入门-14-HTTP基本认证
  15. 【数据结构】两栈共享空间(双端栈)
  16. 亚马逊站外引流 不花钱做流量
  17. 使用dns-prefetch做DNS预获取提高前端性能
  18. 再见,像风一样自由的男人纳什
  19. CI 漂亮的分页样式(页码样式)
  20. iOS马甲包系统性全流程把控

热门文章

  1. magento Service Temporarily Unavailable
  2. Server的Transfer和Response的Redirect
  3. 做好数据分析的关键是打好组合拳
  4. Benelux Algorithm Programming Contest Final-B解题报告
  5. StringJoiner 拯救那些性能低下的字符串拼装代码(转)
  6. (转)Android之发送短信的两种方式
  7. webpack + react
  8. 【RN6752】模拟高清AHD芯片或成为车机新标配
  9. Gridview用法大总结
  10. 【赛尔原创】如何自动地向知识图谱中添加属性?