我有std :: vector of ints v1,v2,v3,... v10。每个都有几十万个元素。每个向量按不同因子排序(因此有10个因子函数f1,f2,... f10)。因此,尽管它们是相互独立排序的,但它们是未分类的。
我想找到这10个向量的交集,我想根据其中一个因素对输出进行排序。对于例如结果应按f1排序。因此,当我将这10个向量与因子函数一起传递给该交叉排序函数时,我将获得一个输出向量,该向量只包含所有向量中存在的元素,并根据f1进行排序。这项操作的最佳方法是什么?
答案 0 :(得分:0)
只需使用std::set_intersection()
几次。我认为你需要交替使用两个临时向量来存储结果。如果你想只使用每个向量的一次传递,你只需使用它的通用版本,可能保留当前最小值的优先级队列。