STL迭代器是以指针为根据塑模出来,所以迭代器的作用像T*。 声明迭代器为const,就像声明指针为const一样(即声明一个T* const指针),标志这个指针不能指向不同的东西,但是所指的东西的值是可以改动的。如果你希望迭代器所指向的东西不可被改动(即希望STL模拟一个const T*指针),你需要的是const_iterator:
如下例子:
std::vector<int> vec;
...
const std::vector<int>::iterator iter = vec.begin();
*iter = 10; //可以,改变iter所指的值
++iter; // 错误,iter是const类型
std::vector<int>::const_iterator cIter = vec.begin();
*cIter = 10;//错误,*cTter是const,不能改变
++cIter;//可以,改变cIter