例如https://en.cppreference.com/w/cpp/container/vector/erase的参数std::vector::erase
在C ++ 11中从iterator
更改为const_iterator
。
这令人惊讶;从逻辑上讲,容器确实必须更改那些迭代器指向的数据,实际上,当我实现自己的向量类时,编译器抱怨说我在使用常量指针调用memmove
;我通过将参数改回iterator
来解决它。
使它们成为const_iterator
的背后逻辑是什么?
答案 0 :(得分:2)
迭代器只说出哪里。向量是非常量的,并且从中被擦除。
这使您能够以一种有成本的方式找到要擦除的位置,只有在实际擦除该位置时,才需要一个非const容器。