在C++ 11中,两种变体都是std::vector::eraseaccept const_iterator,尽管在早期版本的标准中并非如此(C++11§23.3.6.5[vector.modifiers]).您可能(a)没有将代码编译为C++ 11,或者(b)使用尚未完全更新为C++ 11的标准库.
解决方法非常简单:const_iterator ci如果引用了vector的成员v,则可以将等效项派生iterator为v.begin() + (ci - v.begin()).