当我执行下面包含擦除删除习语的代码时,我遇到了崩溃(分段错误)。我想知道是什么问题。
class One
{
public:
One() {}
void print(){ std::cout << "print id: " << id << "\n"; }
void setId(int i) { id =i;}
int getID(){ return id;}
private:
int id;
};
int main()
{
std::vector<One*> v;
std::vector<One*> v2;
for (int i = 0; i < 10; ++i) {
One* one = new One;
one->setId(i);
v.push_back(one);
v2.push_back(one);
}
v.erase((std::remove(v.begin(), v.end(), v2[2]), v.end()));
return 0;
}