const iterator表示iterator是const的,即iterator本身不能改变或者说iterator指针不能改变,但是iterator所指向的内容可以改变。比如,
const std::vector<int>::iterator iter = vec.begin();
*iter = 10;是对的,改变iter指向的内容;但是++iter是错误的,因为iter是const的。
const_iterator的意义与const iterator恰好相反,const修饰的是iterator所指向的内容,即const_iterator所指向的内容不能被改变,但是其本身可以被改变。
如上例,*iter = 10是错误的,因为int是const的;但是++iter是对的,改变iter本身,指向下一个元素。