21xrx.com
2024-12-22 21:01:30 Sunday
登录
文章检索 我的文章 写文章
C++数组去重复操作
2023-07-02 22:02:50 深夜i     --     --
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

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

  
  

评论区

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