除了使用下表来访问容器外,标准库还提供了迭代器的方式(iterator)。标准库为每一种标准容器定义了一种迭代器类型。迭代器类型提供了比上下标操作更通用化的方法:所用的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持上下标操作。
vector<int>::iterator iter;
vector<int>::iterator iter=ivec.begin();
*iter=0;//*iter和ivec[0]指向的元素相同
begin返回迭代器指向的第一个元素,而end操作返回的迭代器不指向容器中任何实际的元素。相反,它只是起到一个哨兵的作用,表示已经处理完容器中的元素。
迭代器的自增自减操作与int型操作的自增自减操作类似。如果iter指向第一个元素,则++iter指向第二个元素。
迭代器编写循环:
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
*iter=0;
const_iterator:只能读取容器中的元素,但不能改变其值。
const vector<int> nines(10,9);
vector<int>::const_iterator it=nines.begin();
*it=10;//error
++it;//ok