对于大多数容器,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
参数。