迭代器基本原理
- 迭代器是一个“可遍历STL容器内全部或部分元素”的对象
- 迭代器指出容器中的一个特定位置
- 迭代器就如同一个指针
- 迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中的对象的范围
一、种类
1、输入迭代器
输入迭代器:又叫“只读迭代器”,他从容器中读取元素
只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列
2、输出迭代器
输出迭代器:又叫“只写迭代器”,它往容器中写入元素,只能一次写入一个元素向前移动,同样只支持一遍算法
3、正向遍历
组合输入迭代器和输出迭代器功能,还可以多次解析一个迭代器指定的位置,可以对一个值进行多次读/写
4、双向迭代器
组合正向迭代器的功能,还可以通过 - - 操作符向后移动位置
5、随机迭代器
组合双向迭代器的功能,还可以向前向后跳过任意个位置,可以直接访问容器中任何位置的元素
双向迭代器的支持
it++ , ++ it , it – , – it, *it ,itA =itB, itA == itB, itA!= itB
其中 list 、set 、multiset 、map 、multimap 支持双向迭代器
随机迭代器支持
在双向迭代器基础上增加
it += i 、 it【i】 、 itA>itB
it -=i 、itA<itB 、itA>=itB
it+i 、itA<=itB
其中vector、deque支持随机迭代器
正向遍历
for(vetcor<int>::iterator it =v1.begin();it!=v1.end();++it)//使用前置++
{
int item =*it;
cout<<*it<<"";
}
反向遍历
for(vector<int>::iterator it=v1.begin();it!=v1.end();++it)
{
cout<<*it;
}
前置++效率比后置++效率高
前置++跟后置++,再循环中效果一样。