21xrx.com
2024-12-27 05:43:23 Friday
登录
文章检索 我的文章 写文章
C++数组去重方法
2023-07-05 12:06:09 深夜i     --     --
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容器、使用双重循环或者使用算法库函数,来快速地对数组进行去重,提高程序的效率。

  
  

评论区

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