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的更多相关文章

  1. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  2. VC++ 迭代器 iterator, const_iterator, const iterator

    迭代器 iterator, const_iterator, const iterator 迭代器iterator的作用类似于指针. (1)iterator只有针对制定<类型>的容器才有效. ...

  3. 迭代器iterator

    现在接着上篇的,写一来标识vector 的元素的对象迭代器iterator: 还是通过具体代码举例: 下面我讲了一个我暑期团队的故事哦~~: #include<iostream> #inc ...

  4. c++中的迭代器 iterator

    迭代器iterator的作用类似于指针. iterator只有针对制定<类型>的容器才有效.例如: vector<int> vec; vector<int>::it ...

  5. Python的迭代器(iterator)和生成器(constructor)

    一.迭代器(iterator) 1.迭代器的概述 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器 ...

  6. 设计模式 - 迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释

    迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考迭代器模式(ite ...

  7. Java 实现迭代器(Iterator)模式

    类图 /** * 自己定义集合接口, 相似java.util.Collection * 用于数据存储 * @author stone * */ public interface ICollection ...

  8. C++迭代器 iterator【转】

    1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...

  9. Java迭代器Iterator

    之前我们实现了迭代器模式,很多编程语言实际上已经内置了迭代器类,比如Java就为我们实现了迭代器Iterator.我们首先来看Iterator中的源码. 通过JDK源码我们发现Iterator是一个接 ...

  10. 迭代器 Iterator

    迭代器 Iterator 2016-5-7 可以这样说,迭代器统一了对容器的访问方式. 考虑这样的情景:原本是对着List编码,但是后来发现需要把相同的代码用于Set.我们需要一种不关心容器类型 而能 ...

随机推荐

  1. nginx反向代理、动静分离

    环境:根据http://www.cnblogs.com/zzzhfo/p/6032095.html配置 方法一:根据目录实现动静分离 在web01创建image并上传一张图片作为静态页面 [root@ ...

  2. IntelliJ Idea 修改编码格式

    Setting→Editor→File Encodings→设置“Project Encoding”为UTF-8,如图:

  3. HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...

  4. BZOJ3223——Tyvj 1729 文艺平衡树

    1.题目大意:维护序列,只有区间翻转这个操作 2.分析:splay的经典操作就是实现区间翻转,就是在splay中有一个标记,表示这个区间被翻转了 然后就是记得各种的操作访问某个点时,记得下传,顺便交换 ...

  5. python __file__ 与相对路径

    用__file__ 来获得脚本所在的路径是比较方便的,但这可能得到的是一个相对路径,比如在脚本test.py中写入: #!/usr/bin/env pythonprint __file__ 按相对路径 ...

  6. php学习笔记(1)-----基础

    语法 <?PHP //code here?> 变量以$开头 字符串并置运算符 . echo $txt1 . " " . $txt2计算字符串长度 strlen() 空格 ...

  7. [POJ3295]Tautology

    [POJ3295]Tautology 试题描述 WFF 'N PROOF is a logic game played with dice. Each die has six faces repres ...

  8. CCF第四题无向图打印路径

    #include<iostream> #include<vector> #include<algorithm> #include<stack> #def ...

  9. C++ 输出调试的一些技巧

    主要利用了宏和stderr... #define enable_debug #ifdef enable_debug FILL some macros/functions here #else /// ...

  10. Delphi中Format与FormatDateTime函数详解

    copy:http://hi.baidu.com/yunfanleo/blog/item/0c51d9cdbc0531550eb34558.html Format是一个很常用,却又似乎很烦的方法,本人 ...