1

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

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

4

1 回答 1

0

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

于 2012-12-23T18:40:33.823 回答