标签:
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=0;i<5;++i) v.push_back(i); vector<int>::iterator n; for(n=v.begin();n!=v.end();++n){ cout<<*n<<" "; *n *=2; //把每个元素都变为原来的两倍 } cout<<endl; //用反向迭代器遍历容器 for(vector<int>::reverse_iterator j=v.rbegin();j!=v.rend();++j) //注意反向 cout<<*j<<" "; return 0; }
++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[5]={1,2,3,4,5}; list<int>lst(a,a+5); //数组名即指针,类似迭代器,故此处可用 list<int>::iterator p = lst.begin(); advance(p,2); 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 0; }
标签:
原文地址:http://www.cnblogs.com/by-dxm/p/5462068.html