如何从多个向量中删除相同的行位置?

时间:2016-03-07 18:23:56

标签: c++ opencv vector

我有n个数量的向量(单列),它们是相关的。其中一个(让我们说第一个n向量)中有一堆NaN个。我使用erase - remove_if成语来清除包含NaN s的行的向量。我想同时或之后从所有其他向量中删除完全相同的行。这似乎是一个常见的编码问题,但我无法找到一个例子。我使用OpenCV库在C ++中进行编码。

这是我的代码示例,它不起作用,我认为这是Miki的建议

vector<float> RemoveManyEs(vector<float> &V1, vector<float> &V2, vector<float> &V3)
{
    int length = V1.size();
    int n = 0;
    do
    {
        if (isnan(V1.at(n)))
        {
            V1.erase(V1.begin() + n);
            V2.erase(V2.begin() + n);
            V3.erase(V3.begin() + n);
        }
        n += 1;
    } while (n < length);
return V1,V2,V3;

}

1 个答案:

答案 0 :(得分:0)

考虑是否确实需要删除行或是否足以将它们设置为零。如果需要删除少于10%的行,那么删除它们对运行时的影响可以忽略不计(甚至可能会在重新分配的开销之后花费更长的时间)。

如果您正在计算相关矩阵,那么您将通过清零所有元素得到相同的结果。这通常是一个更简单的操作,可以为您提供大多数应用程序所需的结果。