[英]C++ to compare vectors, faster way
如果有更快的方法從矢量列表中找到特定的矢量? 我做矢量比較,這需要永遠做,我有數百萬的記錄。
我正在使用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;
}
是的,如果您願意稍微改變您的數據結構。
加速比較的一種簡單方法是使用校驗和。 我的意思是,字面上檢查總和。 在構建向量時,保持每個向量的總和(只要您與數據類型一致,溢出無關緊要)。 然后,不是比較整個向量,而只是比較總和 - 然后你只比較總和匹配的向量。
為了更進一步,你可以通過校驗和對向量進行排序......如果你有很多向量,這可能是值得的,因為它會減少你的校驗和搜索從n到log(n)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.