c++ - 根据不同函数排序的 std::vectors 的交集

标签 c++ stl vector intersection

我有 std::vectors of ints v1, v2, v3, ... v10。每个都有几十万个元素。每个 vector 按不同的因子排序(因此有 10 个因子函数 f1、f2、... f10)。因此,尽管它们是按自己排序的,但相对于彼此而言,它们是未排序的。

我想找到这 10 个 vector 的交集,并且我想根据其中一个因素对输出进行排序。例如结果应根据 f1 排序。因此,当我将这 10 个 vector 与因子函数一起传递给该相交排序函数时,我将得到一个输出 vector ,该 vector 仅包含所有 vector 中存在的元素,并根据 f1 排序。执行此操作的最佳方法是什么?

最佳答案

只需使用 std::set_intersection() 几次。我认为您需要交替使用两个临时 vector 来存储结果。如果你只想对每个 vector 进行一次传递,你只需使用它的通用版本,可能会保留当前最小值的优先级队列。

关于c++ - 根据不同函数排序的 std::vectors 的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013570/

相关文章:

c++ - 使用字符串映射 vector C++ 时可能存在内存泄漏

c++ - 使用具有可定义状态的仿函数作为 unordered_set 哈希函数

c++ - 我如何以通用方式打印任何容器的内容?

c++ - 为什么没有标准的 C++ 数学库 <math> 而不是 C 包装器 <cmath>?

c++ - 为什么 cpplint 不鼓励 Streams?

c++成员在父子构造函数之间更改值

c++ - vector 列表

C++ 重载与有符号和无符号 int 不同

c++ - 指针类型的 priority_queue 元素的排序

c++ - 当使用 Qt 构建 OpenCV 时,cvShowImage 在辅助线程中阻塞