对于标准容器中的元素,可以使用下标操作来处理,正如数组和字符串那样。
不过C++给每个标准容器都提供了迭代器,代替下标,因为有的容器不支持下标操作。所有的标准库容器都提供相同的迭代器,使用方法一致。
每个容器都有自己的迭代器,比如,定义:
vector<int> ivec;
需要使用迭代器,则:
vector<int>::iterator iter;
那么iter迭代器是由vector<int>数据类型定义的iterator。
迭代器常用的操作有iter.begin(),iter.end(),当他们相等时,容器是空的。
此外,使用解引用操作符来取出迭代器所指的元素内容,如*iter。
还有一种迭代器const_iterator,对其解引用时,得到一个指向const对象的引用,因而,const_iterator指向的对象不能修改,只能读取,通常在输出容器内对象值的时候使用。
但是我们不能把const_iterator和const iterator混淆,后者是const的iterator,几乎没有意义,因为如果这样,那么迭代器不能修改,失去了迭代器本来的作用。
此外迭代器还支持一下算术运算,比如:
iter + n;
iter - n ; //向前或向后移动n位
iter1-iter2 ;//两个对象之间的距离;
但是迭代器不支持iter1+iter2;