STL迭代器iterator
一:迭代器原理
迭代器是一个“可遍历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相关推荐
- C++中的迭代器(STL迭代器)iterator
1.Cpp中的迭代器 要访问顺序容器和关联容器中的元素,需要通过迭代器(iterator)进行.迭代器是一个变量,相当于容器和操纵容器的算法之间的中介.迭代器可以指向容器中的某个元素,通过迭代器就可以 ...
- STL源码剖析 迭代器iterator的概念 和 traits编程技法
iterator模式定义如下:提供一种方法,使之能够依序巡访某个 聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式. STL的中心思想在于:将数据容器(containers)和算法(a ...
- STL迭代器(iterator)用法详解
C++ STL迭代器(iterator)用法详解 无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实 ...
- mysql迭代器_迭代器是什么,C++ STL迭代器(iterator)用法详解
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实现.那么,迭代器到底是什么呢? 我们知道,尽管不同 ...
- C++:迭代器(STL迭代器)iterator详解
STL迭代器 参考链接:http://c.biancheng.net/view/338.html
- C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...
- stl clocklist 查找元素_剑指信奥 C++ 之 STL 迭代器(上)
趣乐博思剑指信奥 C++ 系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试 ...
- 有指针为何还要STL迭代器
指针和STL迭代器 1.迭代器 2.迭代器和指针的区别 3.迭代器产生原因 1.迭代器 Iterator(迭代器)模式又称 Cursor(游标)模式,用于提供一种方法顺序访问一个聚合 对象中各个元素, ...
- STL — 迭代器设计思维(一)
迭代器设计思维 关于迭代器的基础原理和作用我以前有一个博客提到过:STL迭代器的原理以及迭代器失效 我不推荐不够了解迭代器的读者直接来看这个 博客,因为你会觉得我在做一些无意义的事情,并且理解上面也会 ...
最新文章
- Windows Azure平台Win VM密码重置
- 数据结构和算法分析: 红黑树
- python 文件操作的模块_Python之文件操作修改模块
- centos eclipse 安装
- spring websocket基于STOMP协议实现,apache httpd反向代理配置
- SpringBoot+webservice
- postgres数据库入门, python 操作postgres
- bea tuxedo中间件入门
- 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱代码分享
- 如何修改MySQL数据库密码
- Mybatis最拿得出手的功能之一 SpringBoot整合Mybatis-Plus 实战之动态SQL
- 湖南省衡阳市谷歌高清卫星地图下载
- Node的老大难问题:require和import
- ASP.NET MVC预览4-使用Ajax和Ajax.Form
- 我在大学所构建的技术体系
- 计算机存储有哪些类型,存储主要分为哪些类型
- Informatica的FTP功能如何使用|infa怎么实现ftp文件自动上传
- 在微信里点击链接无跳转
- 多张图片转换成PDF的必备办公技能
- java 三维旋转立方体_Canvas实现3D效果-可旋转的立方体
热门文章
- coap 返回版本信息_CoAP 协议解析说明(转)
- 字节跳动面试经验 php,双指针算法:字节跳动初级面试题 PHP
- html留言板代码_接口测试平台代码实现19.首页优化
- AcWing 1960. 闪烁(状态压缩+枚举)
- matlab空间球与空间圆求解,基于MATLAB的球管相贯空间曲线焊缝的数学模型
- android线给苹果充电,安卓的充电器可以给iPhone充电吗?这里给你答案
- git如何将远程仓库代码,覆盖本地代码
- JVM系列一:JVM内存组成及分配
- babel-preset-env
- Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解