const vector<int>::iterator it1 = v.begin();
vector<int>::iterator const it2 = v.begin();
const it2------>vector<int>::iterator it2本身是const,即it2本身的值不能改变,即不能指向其他对象,但it2指向的对象的值可以改变
但在一般复合类型中 it1 通常是底层 const,ti2是 顶层 const。但在上面两条声明语句中 it1, it2 都是顶层 const,即
it1, it2 本身的值不能改变(不能指向其它对象),而其所指对象的值是可以改变的。既然不能通过声明迭代器 it1 的形式得到底层 const,那么就需要有其它方法来达成咯。这就是 const_iterator。
vector<int>::const_iterator it3 = v.begin();
it3------>const_iterator it3指向一个const,it3本身的值可以改变,即可以指向其他的对象,但它所指向的对象的值不能改变。
it3 会是一个底层 const,即其所指对象可以改变,但不能改变其所指对象的值。