1.3 迭代器 - iterator

时间:2023-12-19 20:10:32

A

1)概述

要访问顺序容器,关联容器中的元素就要通过迭代器进行。迭代器是个变量,类似于指针

2)分类

按照定义方式不同可分为四种(iterator, const_iterator, reverse_iterator, const_reverator_iterator)

1.3  迭代器 - iterator

3)定义

1.3  迭代器 - iterator

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)不同容器上的迭代器得分功能

1.3  迭代器 - iterator

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 ;
}