C++比较 vector ,更快的方法

标签 c++ performance vector compare

是否有更快的方法从 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/

相关文章:

c++ - 使用 std::string 作为通用 uint8_t 缓冲区

c++ - OpenGL 和 C++ 的 PNG 图像问题

c++ - Braced-init-lists 和函数模板类型推导顺序

html - CSS 子选择器性能与类膨胀

flash - 我可以用 actionscript 代码做 Flash "modify->bitmap->trace bitmap"吗?

c++ - 比较版本号

windows - 用于建立连接的端口数的性能计数器

java - Java 世界中的一毫秒有多长?

c++ - 用 C++ 迭代二维 vector

python - 尝试使用另一个 stackoverflow 答案中的矢量角度公式,但无法让它打印角度