21xrx.com
2025-04-08 13:18:27 Tuesday
文章检索 我的文章 写文章
C++实现数组并集操作
2023-07-05 08:39:34 深夜i     3     0
C++ 数组 并集操作

在C++中,数组是一种非常常用的数据结构,在实际开发中使用非常广泛。而对于数组操作中的一种常见需求就是将两个数组合并成一个新的数组,即数组的并集操作。本文将介绍如何使用C++实现数组的并集操作。

首先,我们需要定义一个函数来实现数组的并集操作。该函数需要输入两个数组,输出一个新的数组,其中包含两个输入数组的所有元素。代码如下:

#include <iostream>
using namespace std;
int* Union(int arr1[], int n1, int arr2[], int n2, int& len) {
  bool b[n1 + n2] = {false};
  int* arr = new int[n1 + n2];
  int index = 0;
  for (int i = 0; i < n1; i++) {
    arr[index++] = arr1[i];
  }
  for (int i = 0; i < n2; i++) {
    if (!b[arr2[i]]) {
      b[arr2[i]] = true;
      arr[index++] = arr2[i];
    }
  }
  len = index;
  return arr;
}
int main() {
  int arr1[] = 3;
  int n1 = sizeof(arr1) / sizeof(arr1[0]);
  int arr2[] = 5;
  int n2 = sizeof(arr2) / sizeof(arr2[0]);
  int len = 0;
  int* arr3 = Union(arr1, n1, arr2, n2, len);
  for (int i = 0; i < len; i++) {
    cout << arr3[i] << " ";
  }
  delete[] arr3;
  return 0;
}

其中,参数arr1和n1分别表示第一个数组的地址和大小,arr2和n2分别表示第二个数组的地址和大小,len表示新数组的大小。函数内部首先创建一个大小为n1 + n2的布尔型数组b,用来判断arr2中的元素是否已经被处理过。接着,定义一个新的数组arr,将arr1中的所有元素拷贝到arr中。之后,循环处理arr2中的元素,如果元素还没有被处理过,就将它加入到新数组arr中。最后,返回新的数组并将它的大小保存在len变量中。

在主函数中,我们定义了两个数组arr1和arr2,将它们作为参数传递给Union函数,并将返回的新数组输出到控制台上。

通过这种方法,我们可以很方便地实现数组并集操作,同时避免了由于多次复制数组导致的不必要的资源浪费。

  
  

评论区

请求出错了