21xrx.com
2025-03-28 02:14:42 Friday
文章检索 我的文章 写文章
C++中如何去除vector中的重复元素?
2023-07-09 18:35:34 深夜i     61     0
C++ vector 去除重复元素

在C++编程中,vector容器是非常常用的一种数据结构。在使用vector容器时,有时可能会遇到一些重复元素的问题。重复元素在一些情况下可能会造成程序处理数据的困难,因此我们需要在程序中去除vector中的重复元素。那么,如何做到呢?

下面就介绍几种在C++中去除vector中重复元素的方法。

方法一(利用STL中的unique函数):

unique() 主要是用来合并相邻的重复元素的,默认返回去重后的尾指针,不同于erase,他只是把重复的元素移到后面了,并没有真正删除重复元素,需要erase一下。

代码示例:

#include <iostream>
#include <vector>
#include <algorithm> // 使用unique需要包含<algorithm>头文件
int main()
{
  std::vector<int> vec 5;
  // 使用unique
  auto iter = std::unique(vec.begin(), vec.end());
  // 使用erase删除重复的元素
  vec.erase(iter, vec.end());
  // 打印去重后的vector
  for (const auto& i : vec)
  
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

方法二(使用set容器):

set容器是STL中提供的一个非常方便的容器,其内部存储是按照元素的值为 key,自动去重并且排序。所以我们可以把vector中的元素直接插入到set中,这样就可以很方便地去除重复元素了。

代码示例:

#include <iostream>
#include <vector>
#include <set>
int main()
{
  std::vector<int> vec 5;
  // 将vector插入到set中,自动去重
  std::set<int> s(vec.begin(), vec.end());
  // 将set中的元素依次插入到vector中
  vec.assign(s.begin(), s.end());
  // 打印去重后的vector
  for (const auto& i : vec)
  
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

总结:

以上两种方法都可以很好地去除vector中的重复元素。如果重复元素比较少,建议使用第一种方法使用unique函数。如果重复元素比较多,建议使用第二种方法使用set容器去重。在实际编程中,可以根据具体情况来选择合适的方法。

  
  

评论区

请求出错了