21xrx.com
2024-11-25 03:15:09 Monday
登录
文章检索 我的文章 写文章
C++数组去重:删除重复元素的方法
2023-07-09 17:43:18 深夜i     --     --
C++ 数组 去重 删除重复元素 方法

C++是一种面向对象的编程语言,在编写代码时,数组是一种常见的数据结构。然而,很多时候我们需要对数组进行去重操作,以便使用数组中的唯一元素进行后续处理。本文将介绍一些在C++中实现数组去重的方法。

方法一:使用STL库中的排序和unique函数。

步骤如下:

1.使用sort算法对数组进行排序。

2.再使用unique函数处理排序后的数组,将重复元素移到数组末尾,并返回指向重复元素区域的迭代器。

3.最后使用erase函数删除重复元素,其参数为unique函数返回的迭代器和数组末尾迭代器之间的区域。

示例代码如下:


#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

int main()

{

 int arr[] = 5;

 int len = sizeof(arr) / sizeof(int);

 vector<int> v(arr, arr + len);

 sort(v.begin(), v.end());

 auto iter = unique(v.begin(), v.end());

 v.erase(iter, v.end());

 for (auto i : v)

  cout << i << ' ';

 return 0;

}

方法二:使用哈希表。

步骤如下:

1.定义一个哈希表,将数组中的元素存入哈希表中。

2.遍历哈希表,将不重复的元素存入一个新的数组中。

示例代码如下:


#include <iostream>

#include <unordered_set>

using namespace std;

int main()

{

 int arr[] = 4;

 int len = sizeof(arr) / sizeof(int);

 unordered_set<int> uniq;

 for (int i = 0; i < len; ++i)

  uniq.insert(arr[i]);

 int new_arr[uniq.size()], i = 0;

 for (auto it : uniq)

  new_arr[i++] = it;

 for (int j = 0; j < i; ++j)

  cout << new_arr[j] << ' ';

 return 0;

}

相比于方法一,使用哈希表的方法不需要对数组进行排序,因此速度更快。

总之,C++具有丰富的数据结构和算法库,我们可以根据实际情况选择最适合的方法来对数组进行去重操作。

  
  

评论区

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