我有一个返回 vector<string>::const_iterator
的函数.当我尝试使用此返回值作为 vector<string>::erase
的参数时我收到 const_iterator
之间的转换错误和 iterator
不可能。有什么办法可以在不改变我函数的返回值类型的情况下规避这个问题吗?谢谢!
最佳答案
在 C++11 中,std::vector::erase
的两种变体接受 const_iterator
,尽管在标准的早期修订版 (C++11 §23.3.6.5 [vector.modifiers]) 中情况并非如此。看起来您要么 (a) 没有将您的代码编译为 C++11,要么 (b) 使用尚未完全更新到 C++11 的标准库。
解决方法相当简单:给定一个引用 vector v
成员的 const_iterator ci
,您可以导出等效的 iterator
作为 v.begin() + (ci - v.begin())
.
关于c++ - 使用 std::vector::erase 和 const_iterators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226827/