21xrx.com
2024-11-10 00:56:09 Sunday
登录
文章检索 我的文章 写文章
C++实现集合的交集并集
2023-07-02 20:39:24 深夜i     --     --
C++ 集合 交集 并集 实现

C++是一种流行的编程语言,常用于开发底层系统、嵌入式系统、游戏引擎等领域。其中,集合的实现是C++编程中常见的问题之一。本文将介绍如何使用C++实现集合的交集并集。

在C++中,集合可以使用STL(Standard Template Library)中的set容器进行实现。set容器是一种基于红黑树实现的自动排序二叉树,可以快速实现查找、插入、删除等操作。使用set容器可以避免自行实现集合操作时的错误和额外工作量。

假设我们有两个集合A和B,分别保存在两个set容器a和b中。我们需要实现计算A和B的交集和并集的操作。代码如下:


#include <set>

#include <iostream>

using namespace std;

set<int> intersection(set<int> a, set<int> b) {

  set<int> result;

  set_intersection(a.begin(), a.end(),

          b.begin(), b.end(), inserter(result,result.begin()));

  return result;

}

set<int> uniion(set<int> a, set<int> b) {

  set<int> result;

  set_union(a.begin(), a.end(),

       b.begin(), b.end(), inserter(result, result.begin()));

  return result;

}

int main() {

  set<int> a = 2;

  set<int> b = 3;

 

  // 计算并集

  set<int> union_set = uniion(a, b);

  cout << "Union: ";

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

   cout << *it << " ";

  }

  cout << endl;

 

  // 计算交集

  set<int> inter_set = intersection(a, b);

  cout << "Intersection: ";

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

   cout << *it << " ";

  }

  cout << endl;

 

  return 0;

}

在以上代码中,我们定义了两个函数,分别用于计算集合的交集和并集。其中,set_intersection和set_union函数是STL提供的算法,可以用于计算两个集合的交集和并集。我们可以将计算结果插入到一个新的集合中,而不需要手动遍历集合。

最后,我们在main函数中演示了如何使用上述函数计算集合A和B的交集和并集。运行结果如下:


Union: 1 2 3 4 5 6

Intersection: 3 4

在输出结果中,可以看到并集包含了A和B中的所有元素,而交集仅包含两个集合共有的元素。通过以上代码,我们可以看到C++使用set容器可以快速计算集合的交集和并集。

  
  

评论区

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