1.3 迭代器 - iterator
A
1)概述
要访问顺序容器,关联容器中的元素就要通过迭代器进行。迭代器是个变量,类似于指针
2)分类
按照定义方式不同可分为四种(iterator, const_iterator, reverse_iterator, const_reverator_iterator)

3)定义

4)例子
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>v;
for(int i=;i<;++i)
v.push_back(i);
vector<int>::iterator n;
for(n=v.begin();n!=v.end();++n){
cout<<*n<<" ";
*n *=; //把每个元素都变为原来的两倍
}
cout<<endl;
//用反向迭代器遍历容器
for(vector<int>::reverse_iterator j=v.rbegin();j!=v.rend();++j) //注意反向
cout<<*j<<" ";
return ;
}
++i比i++要更有效率,因为重载的问题,后置++多生成一个临时对象
B 迭代器的功能分类
1)迭代器的功能分类(p是迭代器,i是整型)
* :正向迭代器。 ++P, P++, *p
** :双向迭代器。正向迭代器的全部功能以及 p--, --p
***:随机访问迭代器。
p+=i;
p-=i;
p[i];
< , > , <= , >= 比较
2)不同容器上的迭代器得分功能

C 迭代器的辅助函数
1)
* :advance(p,n); 使迭代器p向前或向后移动n个元素
** :distance(p,q);计算两个迭代器之间的距离
***:iter_swap(p,q);交换两个迭代器指向的值
使用上述函数需要包含头文件algorithm
2)示例
//迭代器的辅助函数
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int main(){
int a[]={,,,,};
list<int>lst(a,a+); //数组名即指针,类似迭代器,故此处可用
list<int>::iterator p = lst.begin();
advance(p,);
cout<<"1:"<<*p;
list<int>::iterator q = lst.end();
q--;
swap(p,q);
cout<<endl<<"2:";
for(p=lst.begin();p!=lst.end();++p)
cout<<*p<<" ";
return ;
}
1.3 迭代器 - iterator的更多相关文章
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- VC++ 迭代器 iterator, const_iterator, const iterator
迭代器 iterator, const_iterator, const iterator 迭代器iterator的作用类似于指针. (1)iterator只有针对制定<类型>的容器才有效. ...
- 迭代器iterator
现在接着上篇的,写一来标识vector 的元素的对象迭代器iterator: 还是通过具体代码举例: 下面我讲了一个我暑期团队的故事哦~~: #include<iostream> #inc ...
- c++中的迭代器 iterator
迭代器iterator的作用类似于指针. iterator只有针对制定<类型>的容器才有效.例如: vector<int> vec; vector<int>::it ...
- Python的迭代器(iterator)和生成器(constructor)
一.迭代器(iterator) 1.迭代器的概述 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器 ...
- 设计模式 - 迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释
迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考迭代器模式(ite ...
- Java 实现迭代器(Iterator)模式
类图 /** * 自己定义集合接口, 相似java.util.Collection * 用于数据存储 * @author stone * */ public interface ICollection ...
- C++迭代器 iterator【转】
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...
- Java迭代器Iterator
之前我们实现了迭代器模式,很多编程语言实际上已经内置了迭代器类,比如Java就为我们实现了迭代器Iterator.我们首先来看Iterator中的源码. 通过JDK源码我们发现Iterator是一个接 ...
- 迭代器 Iterator
迭代器 Iterator 2016-5-7 可以这样说,迭代器统一了对容器的访问方式. 考虑这样的情景:原本是对着List编码,但是后来发现需要把相同的代码用于Set.我们需要一种不关心容器类型 而能 ...
随机推荐
- Sound Generator 原理
Sound Generator 原理 旨在简单的阐述声音如何通过单片机模块来产生. 声音 声音的种类有千千万,但归根到底还是属于波.在对声音进行模拟转数字的时候,采样越高, 声音被还原的越逼真. 声音 ...
- Python自动化之多进程
多进程multiprocessing from multiprocessing import Process import os def info(title): print(title) print ...
- Python super继承详解
MRO(Method resolution order)是python用来解析方法调用顺序的,mro中记录了一个类的所有基类的类类型序列,super不是简单地调用基类的方法,而是按照MRO中的顺序来调 ...
- VB 编程
error播放出错提示音 errorPromptVoice() 返回一个字符串,其中包含从某个字符串右端开始的指定数量的字符 Microsoft.VisualBasic.Right(strBt45Te ...
- ubuntu下配置apache2多域名(apache2.4.6)
Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同. 1. 打开目录 /et ...
- ThinkPHP 知识点链接
1.Thinkphp3.2 行为扩展和插件(Hook) http://www.thinkphp.cn/topic/21323.html 2.ThinkPHP3.1.3的单字母函数汇总 ...
- java servlet的工作原理
servlet本质上就是java类嘛.不过是有特殊规范的java类而已.下面就说一说为什么servlet要有特殊规范. 首先,考虑一下什么地方用servlet,WEB应用,而且是需要servlet容器 ...
- 解读Unity中的CG编写Shader系列六(漫反射)
转自 http://www.itnose.net/detail/6116553.html 如果前面几个系列文章的内容过于冗长缺乏趣味着实见谅,由于时间原因前面的混合部分还没有写完,等以后再补充,现在开 ...
- VIM常用操作总结
VIM常用的模式网上说法不太一样,但是大同小异,这里大致分一下,便于后面总结 1.一般模式 默认打开文件后的模式,这个时候只能移动光标,不能编辑 2.输入模式 一般模式按下i,就可以进入输入模式,输入 ...
- fastReport 运行时设计报表 (mtm)
设计报表 通过“TfrxReport.DesignReport”方法调用报表设计器.你必须在你的项目中包含报表设计器 (必要条件是:要么使用“TfrxDesigner”组件,要么增加“frxDesgn ...