通过C ++ 11中的const迭代器进行破坏

时间:2016-01-30 16:08:09

标签: c++ c++11

http://en.cppreference.com/w/cpp/container/vector/erase 举个例子。为什么签名会从使用非const迭代器变为const迭代器,因为操作确实通过提供的迭代器修改了容器?

我认为这是非const迭代器的定义。改变背后的原因是什么?

2 个答案:

答案 0 :(得分:5)

如果您已经拥有对容器的非const访问权限(erase是非const成员函数),则只能执行erase

鉴于此,您可以将const_iterator转换为iterator(可能使用distanceadvance效率低下),因此您无法获得任何额外的访问权限。< / p>

答案 1 :(得分:1)

作为const的迭代器意味着迭代器指向的元素无法通过该迭代器进行修改。这并不意味着容器本身无法使用迭代器的信息修改这些内容。