const迭代器,就是不能改变的迭代器,是常量,类似指针常量,不能改变指向的地址,但是可以改变指向地址的内容。
例如:
vector<int> vv(10,9);
const vector<int> :: iterator iter = vv.begin();
如果出现:
++iter;//报错
就会报错,因为iter是一个常量,因此不能改变。换句话说,iter只能指向vv的第一个元素,不能指向其他的元素。
所以,就可以出现以下:
*iter = 10;//正确
因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。
对于const_iterator来说的话,正好相反。
例如:
vector<int> vv(10,9);
vector<int> ::const_iterator iter ;
定义了一个const_iterator迭代器。这个迭代器是可以递增的,但是指向的元素的值是不可以改变的。比如:
for(iter = vv.begin(); iter != vv.end(); ++iter){
cout << *iter << endl;
} //这是正确的,iter本身的值是可以改变的
但是
for(iter = vv.begin(); iter != vv.end(); ++ iter){
*iter = 0;
}//这是错误的