c++ - 为什么 std::vector::erase 参数更改为 const_iterator?

标签 c++

根据例如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/

相关文章:

c++ - gnuplot-iostream : no plot when x values are dates

c++ - 将 MarbleWidget 添加到 QT 的主窗口中

c++ - 当我调用工作簿的 PrintPreview() 方法时出现 Com 错误 800a03ec

c++ - 我怎样才能使 cout 更快?

c++ - 与返回指针相比,返回地址是否有任何有用的应用?

c++ - STL unordered_map 序列化

c++ - 从 Windows 10 上的 Win32 GUI 应用程序输出到控制台

android - 从 Android 中的 C 文件调用 C++ 函数

c++ - g++-4.4 中的强类型枚举

C++ 迭代器和链表