参考:《 Effective C++》第三版50页
STL迭代器系以指针为根据塑模出来的,所以迭代器的作用就像个T*指针。声明迭代器为const的就像声明指针为const一样即(T*const指针),表示这个迭代器不得指向不同的东西,但是它所指向的东西的值是可以变得。如果你希望迭代器所指向的值不可变,你需要的是const_iterator:
例如:
std::vector<int>vec;
..........
cosnt std::vector<int>::iterator iter = vec.begin();
*iter = 10; //没问题,改变iter所指物
++iter //错误 iter是const
std::vector<int>::const_iterator cIter = vector.begin();
*cIter = 10; //错误,*Iter是const
++cIter //没问题