如何求集合的交点

How to find intersection of sets

本文关键字:集合 何求      更新时间:2023-10-16

我有N组整数。现在我需要一个函数,它能求出这些集合的交点。例如,对于下面的

Set1 = { A, D, E, F, G, L }
Set2 = { N, K, E, G, B, C }
Set3 = { K, P, Q, E, F, G }
Set4 = { Z, Y, C, G, F, E }

由于E和G在每一个集合中,我应该得到{ E, G }作为输出。最简单的方法是什么?我知道编写自己的代码来做到这一点并不困难,但也许已经有一个STL或任何其他库函数来实现这一点,我对此感兴趣。

我能想到的两个可能的解决方案

  1. 将集合存储在矢量中。用std::sort对向量进行排序,用std::set_intersection
  2. 计算集合交集
  3. 将集合存储在std::set中,这将导致元素排序,并使用std::set_intersection

参见std::set_intersection。(正如已经在评论中指出的那样,您可能需要交集,而不是并集。)