擦除如何在向量上工作?

时间:2018-02-08 11:27:56

标签: c++

我是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

我读了一些关于迭代器在运行擦除后失效的内容,但我无法真正掌握如何解决这个问题。

有人关心向初学者解释?

谢谢!

0 个答案:

没有答案