21xrx.com
2024-09-19 10:04:07 Thursday
登录
文章检索 我的文章 写文章
C++中的容器去重技巧
2023-06-27 14:58:08 深夜i     --     --
C++ 容器 去重 技巧 算法

在C++中,容器是一种非常有用的数据结构,它能够存放多个元素,并能够对这些元素进行一系列的操作。然而,在实际的开发中,我们经常需要去重操作,即从容器中删除重复的元素。为了实现这一目标,下面是几种常用的容器去重技巧。

1.使用set容器。

set容器是一种关联式容器,它内部的元素是按照一定顺序排列的,并且每个元素只存在一份。因此,我们可以将需要去重的元素存入set中,然后遍历这个set容器,将存放于set中的元素再保存到原容器中即可完成去重操作。示例代码如下:


vector<int> vec = 4;

set<int> s(vec.begin(), vec.end());

vec.assign(s.begin(), s.end());

2.使用sort和unique算法。

sort和unique算法是C++标准库中的常用算法,它们可以帮我们快速的去除容器中相邻的重复元素。具体来说,我们可以将容器内的元素进行排序,然后调用unique算法可以将相邻的重复元素移动到容器末尾,并返回一个指向去重后的容器末尾的迭代器,最后再将这个迭代器之前的元素删除即可。示例代码如下:


vector<int> vec = 4;

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

auto end_iter = unique(vec.begin(), vec.end());

vec.erase(end_iter, vec.end());

3.使用unordered_set容器。

unordered_set容器是一种哈希表,它内部的元素是无序的,并且每个元素只存在一份。因此,我们可以将需要去重的元素存入unordered_set中,然后遍历原容器,将未存放于unordered_set中的元素保存到一个新的容器中即可完成去重操作。示例代码如下:


vector<int> vec = 1;

unordered_set<int> s;

vector<int> res;

for (auto i : vec) {

  if (s.insert(i).second) res.push_back(i);

}

vec = res;

总的来说,对于不同场景,我们可以选择不同的技巧来实现容器去重操作。大家可以根据实际的需求选择最适合的技巧来解决问题。

  
  

评论区

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