根据例如https://en.cppreference.com/w/cpp/container/vector/erase std::vector::erase
的参数在 C++11 中从 iterator
更改为 const_iterator
。
这很令人惊讶;从逻辑上讲,容器确实必须更改那些迭代器指向的数据,事实上,当我实现自己的 vector 类时,编译器提示我正在使用 const 指针调用 memmove
;我通过将参数改回 iterator
来修复它。
const_iterator
背后的逻辑是什么?
最佳答案
迭代器只是说在哪里。该 vector 是非常量的,并且是从中删除的。
这可以让你以成本方式找到要删除的位置,只有当你真正删除它时,你才需要一个非常量容器。
关于c++ - 为什么 std::vector::erase 参数更改为 const_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146242/