21xrx.com
2024-11-25 00:17:23 Monday
登录
文章检索 我的文章 写文章
C++中如何去除vector中的重复元素?
2023-07-09 18:35:34 深夜i     --     --
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容器去重。在实际编程中,可以根据具体情况来选择合适的方法。

  
  

评论区

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