我试图迭代一个向量并删除对象的第一次出现。我一直在得到编译错误(使用g++),但我按照stackoverflow答案和其他来源建议的方式进行删除。可能是我错过了一些非常简单的东西,所以需要另一双眼睛来帮忙。
#include <iostream>
#include <vector>
#include <assert.h>
using namespace std;
bool Garage::remove(const Car &car){
assert(!empty());
int size = v.size();
for(vector<Car>::const_iterator it = v.begin(); it != v.end(); ++it){
if(it -> Car::make() == car.Car::make()){
it = v.erase(it);
assert(v.size() == size - 1);
return true;
}
}
return false;
}
编译错误是:error: no matching function for call to 'std::vector::erase(const Car&)'。