gpt4 book ai didi

c++ - 如何从多个 vector 中删除相同的行位置?

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:02 24 4
gpt4 key购买 nike

我有 n 个 vector (单列),它们是相关的。其中一个(假设 n vector 中的第一个)中有一堆 NaN。我使用了 erase - remove_if 习惯用法来清除包含 NaN 的行的 vector 。我想同时或事后从所有其他 vector 中删除完全相同的行。这似乎是一个常见的编码问题,但我找不到示例。我使用 C++ 和 OpenCV 库进行编码。

这是我的代码示例,它不起作用,我认为这是 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;

最佳答案

考虑您是否真的需要删除这些行,或者是否足以将它们设置为零。如果只有不到 10% 的行需要删除,那么删除它们对运行时的影响可以忽略不计(并且在重新分配的开销之后甚至可能使事情花费更长的时间)。

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

关于c++ - 如何从多个 vector 中删除相同的行位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com