21xrx.com
2024-12-22 21:21:54 Sunday
登录
文章检索 我的文章 写文章
C++实现集合的交集和并集
2023-07-11 09:00:16 深夜i     --     --
C++ 集合 交集 并集

在编程中,集合是一个常见的概念。它是由一组元素组成的无序集合,其中每个元素都是唯一的。在C++中,可以使用STL提供的set容器来实现集合的操作。

首先,我们需要定义两个set容器来表示两个集合。例如,我们可以定义一个名为set1和另一个名为set2的集合。然后,我们可以使用insert函数将一些元素添加到这些集合中。


#include <iostream>

#include <set>

using namespace std;

int main() {

  set<int> set1, set2;

  set1.insert(1);

  set1.insert(2);

  set1.insert(3);

  set2.insert(2);

  set2.insert(3);

  set2.insert(4);

}

一旦我们有了这两个集合,我们可以使用STL提供的集合算法来执行关于这些集合的操作。

使用集合的交集操作时,我们可以使用STL中的set_intersection函数。这个函数需要三个参数:两个输入集合分别表示为迭代器区间,以及一个输出集合的起始位置。

例如,我们可以将交集保存在名为result的集合中,代码如下:


set<int>::iterator it;

set<int> result;

it = set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), result.begin());

result.erase(it, result.end());

cout << "Intersection: ";

for(it = result.begin(); it != result.end(); it++) {

  cout << *it << " ";

}

使用集合的并集操作,我们可以使用STL中的set_union函数。这个函数也类似于set_intersection函数,需要三个参数:两个输入集合分别表示为迭代器区间,以及一个输出集合的起始位置。

例如,我们可以将并集保存在名为result的集合中,代码如下:


set<int>::iterator it;

set<int> result;

it = set_union(set1.begin(), set1.end(), set2.begin(), set2.end(), result.begin());

result.erase(it, result.end());

cout << "Union: ";

for(it = result.begin(); it != result.end(); it++) {

  cout << *it << " ";

}

总之,C++中的STL提供了一些方便的方法来实现集合的操作,包括集合的交集和并集。这些函数使用简单,易于理解,我们可以通过它们来轻松地完成对集合的操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复