21xrx.com
2025-04-05 14:56:48 Saturday
文章检索 我的文章 写文章
C++数组去重复操作
2023-07-02 22:02:50 深夜i     8     0
C++ 数组 去重复

在C++中,数组去重复操作很常见。当我们需要对一个数组进行去重操作时,可以采用多种方法来完成。下面将介绍一些最常用的方法。

1.使用set容器

set是C++标准模板库中的一个容器,它可以自动去除重复元素。我们可以将数组中的元素添加到一个set中,然后再将set中的元素放回原数组。

下面是使用set容器实现数组去重复操作的示例代码:

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
  int arr[] = 3;
  int n = sizeof(arr) / sizeof(int);
  set<int> s(arr, arr + n);
  copy(s.begin(), s.end(), arr);
  n = s.size();
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << endl;
  return 0;
}

输出结果为:

1 2 3 4 5

2.使用双重循环

双重循环法是最常用的数组去重方法之一,其原理是比较当前元素与之后的所有元素,如果有重复,则删除之后的元素。

下面是使用双重循环实现数组去重复操作的示例代码:

#include <iostream>
using namespace std;
int main()
{
  int arr[] = 3;
  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]) {
        for (int k = j; k < n - 1; k++) {
          arr[k] = arr[k + 1];
        }
        n--;
        j--;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    cout << arr[i] << " ";
  }
  cout << endl;
  return 0;
}

输出结果为:

1 2 3 4 5

3.使用sort函数

sort函数在对数组进行排序的同时,会将重复的元素相邻。我们可以利用这个特性,再进行一次遍历,删除相邻的重复元素。

下面是使用sort函数实现数组去重复操作的示例代码:

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

输出结果为:

1 2 3 4 5

总之,以上三种方法都可以实现数组去重复操作。选择哪种方法取决于具体的应用场景和个人的代码习惯。

  
  

评论区

请求出错了