21xrx.com
2025-04-11 15:48:10 Friday
文章检索 我的文章 写文章
C++ 实现原数组去重并生成新数组
2023-07-12 20:44:28 深夜i     15     0
C++ 数组去重 新数组

C++是一种强健的编程语言,其应用范围非常广泛。在许多实际生活场景中,需要对数组进行操作。当涉及到去重时,使用C++可以很容易地完成这个任务。本文将详细介绍如何使用C++实现原数组去重并生成新数组。

首先,我们需要进行一些准备工作。在C++中,数组是存储特定类型元素的容器。为了实现数组去重并生成新数组,我们需要准备两个数组,一个用于存储原始数组,一个用于存储去重后的新数组。同时,还需要定义数组的大小。

接下来,我们需要进行去重操作。C++中可以采用多种方法去重,例如使用哈希表、先排序再去重等。在此,我们将使用一个简单而有效的去重算法,可用于常见的数据类型,如整数、字符和字符串等。具体步骤如下:

1. 定义一个标志数组,用于记录数字是否已出现过。

2. 遍历原始数组,并将每个数字的出现状态记录到标志数组中。

3. 遍历标志数组,找到未出现过的数字,并将其存储到新数组中。

4. 最后,我们得到了一个去重后的新数组。

接下来,让我们来看一下实现代码:

#include<iostream>
using namespace std;
int main()
{
  int arr[] = 2// 定义原始数组
  int size = sizeof(arr) / sizeof(int); // 计算数组大小
  int new_arr[size]; // 定义新数组
  bool isExist[size]; // 定义标志数组
  
  for(int i = 0; i < size; i++)
  {
    isExist[i] = false// 初始化标志数组
  }
  
  int count = 0// 定义计数器
  
  for(int i = 0; i < size; i++)
  {
    if(!isExist[i]) // 如果数字未出现过
    {
      new_arr[count] = arr[i]; // 存储到新数组中
      count++; // 计数器加一
      for(int j = i+1; j < size; j++)
      {
        if(arr[i] == arr[j]) // 如果数字已出现过
        {
          isExist[j] = true// 在标志数组中记录其出现状态
        }
      }
    }
  }
  
  // 输出新数组
  for(int i = 0; i < count; i++)
  {
    cout << new_arr[i] << " ";
  }
  cout << endl;
  
  return 0;
}

在上面的代码中,我们首先定义了原始数组、新数组、标志数组和数组大小。然后,我们初始化标志数组,并使用循环遍历原始数组。在遍历过程中,我们使用计数器来记录新数组中的元素个数。当发现数组中未出现过的数字时,我们将其存储到新数组中,并在标志数组中记录其出现状态。最后,我们输出新数组中的所有元素。

在实践中,我们可以使用以上代码作为模板,根据需要进行修改。无论是对于小型还是大型数组,均可使用此方法进行去重操作。

总之,C++提供了许多方法来完成数组去重的任务,本文介绍了一种简单而实用的方法。希望读者能够掌握这个方法,并在实际编程过程中应用到自己的工作中。

  
  

评论区