我有一个 Car 对象的向量,声明为
vector<Car> vCars
在我的一个函数中,我需要擦除向量的第一个元素。听起来很简单吧?引发错误的行:
vCars.erase( vCars.begin() );
和错误:
no matching function for call to 'std::vector<Car>::erase(std::vector<Car>::const_iterator) const'
我理解擦除通常只需要一个迭代器作为它的参数,而不是一个 const_iterator。我一直在寻找错误的解决方案或解决方法,例如擦除删除成语,但从我所看到的情况来看,当我需要按位置删除时,它只会按值删除元素 - 足够简单,只是第一个位置的元素!(我知道这对于矢量来说性能不好,但我需要为此使用矢量)
编辑:为了澄清情况,调用包含的函数如下:
/// Removes the Car at the front of the garage without returning the instance.
void Garage::pop() const {
if ( !empty() ) {
vCars.erase( vCars.begin() );
}
}
编辑:我现在知道我哪里出错了。有很多方法都是 const 的,而我只是盲目地将 pop() 设置为 const 方法!一旦我删除了 const,问题就解决了。感谢您为我指明正确的方向!