21xrx.com
2024-12-22 21:19:19 Sunday
登录
文章检索 我的文章 写文章
C++ 语言中如何实现两个数组的交集
2023-06-24 08:42:10 深夜i     --     --
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容器是非常实用的一个容器,在解决一些特定问题时非常方便。

  
  

评论区

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