如果有更快的方法从矢量列表中找到特定的矢量?我做矢量比较,这需要永远做,我有数百万的记录。
我正在使用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;
}
答案 0 :(得分:2)
是的,如果您愿意稍微改变一下数据结构。
加快比较的一种简单方法是使用校验和。我的意思是,字面上检查总和。在构建向量时,保持每个向量的总和(只要您与数据类型一致,溢出无关紧要)。然后,不是比较整个向量,而是仅比较总和 - 然后只有在总和匹配时才比较向量。
为了更进一步,您可以通过校验和对向量进行排序...如果您有很多向量,这可能是值得的,因为它会减少校验和搜索从n到log(n)