我是C ++的新手。我想知道如何从引用传递的向量中擦除元素,其中返回的Length(我的Vector3D对象的函数)的值小于传递给函数的int参数。
void Util::removeLessThan(vector<Vector3D> &vectors, int lessThan) {
vector<Vector3D>::iterator it;
for(it = vectors.begin(); it != vectors.end(); it++) {
if(it->Length() < lessThan) {
vectors.erase(it);
}
}
}
似乎它只从向量中删除了几个元素。这是一个输出:
在运行removeLessThan函数之前向量:
22.561
17.3781
12.2066
7.07107
3.74166
运行removeLessThan函数后向量:
7.07107
12.2066
17.3781
22.561
我读了一些关于迭代器在运行擦除后失效的内容,但我无法真正掌握如何解决这个问题。
有人关心向初学者解释?
谢谢!