类似于指针 const vector<int>::iterator中,const是修饰的迭代器,也就是是个常迭代器,一旦初始化比如=a.begin(),再不能更改它的值,比如赋值=a.end()是不行的,递增递减操作等都不允许。 虽然类似指针,但指针是内置类型,所以编译器可以通过const的位置来判断是常指针还是指向常量的指针,而迭代器只是一个对象,所以编译器不能分辨,所以用const_iterator来取代指向常量的指针,使用它,你通过这个迭代器对迭代器所指向的内容进行改写是非法的。
通过简单的代码区别,更能说明问题, vector<int> ivec; vector<int>::const_iterator citer1 = ivec.begin(); const vector<int>::iterator citer2 = ivec.begin(); *citer1 = 1; //error *citer2 = 1; //right ++citer1; //right ++citer2; //error