21xrx.com
2025-03-27 05:00:10 Thursday
文章检索 我的文章 写文章
C++数组去重方法
2023-07-05 12:06:09 深夜i     9     0
C++ 数组 去重 方法

在C++中,数组是一种非常常见的数据类型。但是,在实际的编程过程中,我们经常会遇到数组中有重复元素的情况,这时就需要对数组进行去重。下面介绍几种C++数组去重的方法。

1.使用STL容器

STL(Standard Template Library)是C++中的标准模板库,其中包含了一些非常实用的容器。我们可以使用其中的set或unordered_set容器来去重。set容器是一种按照元素大小自动排序的容器,而unordered_set是一种无序的容器。它们都能够存储不重复的元素,可以用来快速去重。

下面是使用set容器去重的示例代码:

#include <iostream>
#include <set>
using namespace std;
int main()
{
  int arr[] = 3;
  int n = sizeof(arr) / sizeof(int);
  set<int> st(arr, arr + n);
  for (auto i : st)
  
    cout << i << " ";
  
  return 0;
}

输出结果为:1 2 3 4 5。

2.使用双重循环

另外一种常见的数组去重方法是使用双重循环。这种方法的基本思路是对数组进行遍历,每遇到一个重复的元素就将其删除或标记,最后将去重后的元素复制到新的数组中去。下面是使用双重循环进行去重的示例代码:

#include <iostream>
using namespace std;
int main()
{
  int arr[] = 2;
  int n = sizeof(arr) / sizeof(int);
  for (int i = 0; i < n; i++)
  {
    for (int j = i + 1; j < n; j++)
    {
      if (arr[i] == arr[j])
      {
        arr[j] = arr[n - 1];
        n--;
        j--;
      }
    }
  }
  for (int i = 0; i < n; i++)
  {
    cout << arr[i] << " ";
  }
  return 0;
}

输出结果为:1 2 3 4 5。

3.使用算法库函数

C++中的algorithm库提供了一些现成的函数来快速对数组进行操作。其中,unique函数就可以用来对数组进行去重操作。unique函数会将重复的元素移到数组的末尾,并返回指向第一个重复元素的迭代器。我们只需要再用erase函数删除重复元素即可。下面是使用算法库函数进行去重的示例代码:

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
  int arr[] = 2;
  int n = sizeof(arr) / sizeof(int);
  sort(arr, arr + n);
  auto end = unique(arr, arr + n);
  arr[end - arr] = '\0';
  for (int i = 0; i < n; i++)
  {
    if (arr[i] == '\0')
      break;
    cout << arr[i] << " ";
  }
  return 0;
}

输出结果为:1 2 3 4 5。

通过上面的介绍,我们可以发现,C++数组去重操作并不难。我们可以选择使用STL容器、使用双重循环或者使用算法库函数,来快速地对数组进行去重,提高程序的效率。

  
  

评论区

请求出错了