作为这个问题的延伸 const_iterators
更快吗? ,我对 const_iterators
还有一个问题。如何删除 const_iterator
的常量?尽管迭代器是指针的广义形式,但 const_iterator
和 iterator
s 仍然是两个不同的东西。因此,我相信,我也不能使用 const_cast<>
从 const_iterator
转换为 iterator
s。
一种方法可能是您定义一个迭代器,它移动’直到 const_iterator
指向的元素。但这看起来是一个线性时间算法。
关于实现这一目标的最佳方法的任何想法?
原文由 aJ. 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 C++11 中有一个恒定时间复杂度的解决方案:对于任何序列、关联或无序关联容器(包括所有标准库容器),您可以使用空范围调用范围擦除成员函数:
范围擦除成员函数有一对
const_iterator
参数,但它们返回一个iterator
。因为提供了一个空范围,所以对擦除的调用不会更改容器的内容。向 Howard Hinnant 和 Jon Kalb 致敬这一技巧。