我有一个返回vector<string>::const_iterator
的函数。当我尝试将此返回值用作vector<string>::erase
的参数时,我收到错误,指出const_iterator
和iterator
之间无法进行转换。有没有办法在不改变函数的返回值类型的情况下绕过这个问题?谢谢!
答案 0 :(得分:5)
在C ++ 11中,std::vector::erase
的两个变体都接受const_iterator
,尽管在早期版本的标准中并非如此(C ++11§23.3.6.5[vector.modifiers] )。您似乎(a)没有将您的代码编译为C ++ 11,或者(b)使用尚未完全更新为C ++ 11的标准库。
解决方法非常简单:如果const_iterator ci
引用了向量v
的成员,则可以将等效iterator
推导为v.begin() + (ci - v.begin())
。