簡體   English   中英

C ++比較矢量,更快的方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM