取 http://en.cppreference.com/w/cpp/container/vector/erase 举个例子。为什么签名会从使用非const迭代器变为const迭代器,因为操作确实通过提供的迭代器修改了容器?
我认为这是非const迭代器的定义。改变背后的原因是什么?
答案 0 :(得分:5)
如果您已经拥有对容器的非const访问权限(erase
是非const成员函数),则只能执行erase
。
鉴于此,您可以将const_iterator
转换为iterator
(可能使用distance
和advance
效率低下),因此您无法获得任何额外的访问权限。< / p>
答案 1 :(得分:1)
作为const的迭代器意味着迭代器指向的元素无法通过该迭代器进行修改。这并不意味着容器本身无法使用迭代器的信息修改这些内容。