如何求集合的交点
How to find intersection of sets
我有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或任何其他库函数来实现这一点,我对此感兴趣。
我能想到的两个可能的解决方案
- 将集合存储在矢量中。用
std::sort
对向量进行排序,用std::set_intersection
计算集合交集 - 将集合存储在
std::set
中,这将导致元素排序,并使用std::set_intersection
参见std::set_intersection
。(正如已经在评论中指出的那样,您可能需要交集,而不是并集。)
相关文章:
- 处理多个异常集合的C++方法
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- 如何将ampl中的集合表示为c++中的向量
- 检查值是否在集合p1和p2中,但不在p3中
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 带过滤器的现代迭代c++集合
- 如何将结构插入到集合中并打印集合的成员
- 集合上的输出迭代器:assign和increment迭代器
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 实现一个在集合上迭代的模板函数
- If语句未被求值C++
- Python中的for循环与C++有何不同
- 尝试使用集合函数时出现分段错误
- 互斥指针的集合
- c++找不到具有相同哈希的无序集合元素
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 给定两个偶数,求出它们之间所有偶数的平方和
- (也许是NP-Hard)求一个集合的子集总数,使得每个子集在与其所有元素相乘时的值都大于X
- C++ 和 Java 之间的表达式求值顺序有何不同
- 如何求集合的交点