我试图比较2个不同的向量来捕捉任何重复.一个向量是10个数字的5百万个元素,另一个是10个元素中的280万个.我的操作系统是ubuntu 18.04,我使用的是QtCreator.当我尝试比较这些大型载体时,我得到了一个挂机.这是我尝试过的:
vector<vector<int> >::iterator v1;
vector<vector<int> >::iterator v2;
for(v1 = vector1.begin(); v1 != vector1.end(); v1++)
{
for(v2 = vector2.begin(); v2 != vector2.end(); v2++)
{
if(*v1 == *v2)
{
vector1.erase(v1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它并调试Qt挂起.我也想知道我是否需要更改擦除看起来像:
vector1.erase(v1.begin(), v1.end());
Run Code Online (Sandbox Code Playgroud)
任何有关"更好"的方式的建议都会有所帮助.我知道这些是一些具有超过250万个10个数字元素的大向量.
Thx提前
Idzireit
仍在解决这个问题.现在我正在尝试Mark Ransom解决方案的衍生产品.这是我到目前为止所得到的:
#include "includes.h"
bool vec_less(vector<int> &v1, vector<int> &v2)
{
for(int i = 0; i < 10; i++)
{
if(v1[i] == v2[i])
{
i++;
}
if(v1[i] < v2[i])
return true;
else
return false;
}
return v1.size() <v2.size();
}
void dupfilter(vector<vector<int> > &aaperms, …Run Code Online (Sandbox Code Playgroud)