是否有更快的方法从 vector 列表中找到特定 vector ?我做 vector 比较,这需要永远做,我有数百万条记录。
我正在使用 openmp
这就是我目前所拥有的
#pragma omp parallel for
for(int i=0;i<crossed.size();i++){
#pragma omp flush (exit)
if(!exit && (crossed[i]== vectors)){
loop = i;
found = true;
exit = true;
#pragma omp flush (exit)
}
}
if(found == false){
crossed.push_back(vectors);
cross.push_back(0);
}
else{
cross[loop] = cross[loop]+1;
}
最佳答案
是的,如果您愿意稍微更改一下数据结构。
加快比较速度的一种简单方法是使用校验和。我的意思是,从字面上检查总和。在构建 vector 时,保留每个 vector 总和的总和(只要您与数据类型一致,溢出就无关紧要)。然后,不是比较整个 vector ,而是只比较总和 - 如果总和匹配,那么你只需要比较 vector 。
更进一步,您可以按校验和对 vector 进行排序...这可能只有在您有很多 vector 时才值得,因为它将校验和搜索从 n 减少到 log(n)
关于C++比较 vector ,更快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158609/