21xrx.com
2025-03-21 00:46:38 Friday
文章检索 我的文章 写文章
C++ 语言中如何实现两个数组的交集
2023-06-24 08:42:10 深夜i     29     0
C++ 数组 交集 实现

在C++语言中,有多种方法可以实现两个数组的交集。下面将介绍两种实现方式。

方法一:使用循环嵌套实现

这种方法的思路是:遍历第一个数组中的所有元素,然后对于每个元素,都在第二个数组中进行查找,如果能够找到,则将该元素存入一个新的数组中。代码如下:

#include <iostream>
using namespace std;
int main()
{
  int arr1[5] = 1;
  int arr2[5] = 6;
  int arr3[5];
  int index = 0; //新数组的下标
  for (int i = 0; i < 5; ++i)
  {
    for (int j = 0; j < 5; ++j)
    {
      if (arr1[i] == arr2[j])
      {
        arr3[index++] = arr1[i];
        break;
      }
    }
  }
  cout << "交集为: ";
  for (int i = 0; i < index; ++i)
  {
    cout << arr3[i] << " ";
  }
  return 0;
}

方法二:使用STL中的集合set实现

另一种实现方法是使用C++ STL中的set容器。set是一个集合容器,存储的元素是唯一且有序的。将一个数组放入set容器中,然后遍历另一个数组,对于每个元素,判断是否在set容器中存在,如果存在,则将该元素存入一个新的数组中。代码如下:

#include <iostream>
#include <set>
using namespace std;
int main()
{
  int arr1[5] = 1;
  int arr2[5] = 7;
  int arr3[5];
  int index = 0; //新数组的下标
  set<int> s(arr1, arr1 + 5); //将arr1数组放入set容器中
  for (int i = 0; i < 5; ++i)
  {
    if (s.find(arr2[i]) != s.end()) //如果在set容器中存在
    {
      arr3[index++] = arr2[i];
    }
  }
  cout << "交集为: ";
  for (int i = 0; i < index; ++i)
  {
    cout << arr3[i] << " ";
  }
  return 0;
}

总结

实现两个数组的交集有很多种方法,以上只是其中两种常用的方法,大家可以根据实际情况选择合适的方法。C++ STL中的set容器是非常实用的一个容器,在解决一些特定问题时非常方便。

  
  

评论区