对于大多数容器,iterator类型提供对容器中值的读写访问,而const_iterator类型提供只读访问。但是,对于std::set<T>,迭代器类型不能提供读写访问,因为修改集合中的值(可能)会破坏容器不变量。因此,在std::set<T>、iterator和中都const_iterator提供只读访问。
这引出了我的问题:你可以用 a 做std::set<T>::iterator的事情和你可以用 a 做的事情之间有什么区别std::set<T>::const_iterator吗?
请注意,在 C++11 中,容器的操作方法(例如erase)可以带const_iterator参数。