📜  在 C++ 中使用 set 获取重复项(1)

📅  最后修改于: 2023-12-03 15:37:18.506000             🧑  作者: Mango

在 C++ 中使用 set 获取重复项

在 C++ 中,set 是一个标准库容器,用于存储唯一元素。使用 set 可以轻松地获得一组数据中的唯一值。但是,有时候我们需要获取重复项。本文将介绍如何在 C++ 中使用 set 获取重复项。

set 概述

首先,我们需要了解 set 的基本用法。

set 的特点:

  • 存储唯一元素。
  • 默认情况下,元素按照升序排列。
  • 不能直接使用下标访问元素。

set 常用的操作:

  • 插入元素:void insert(const value_type& val)
  • 删除元素:void erase(iterator position)
  • 查找元素:iterator find(const value_type& val)
获取重复项

要获取重复项,我们需要用到一个 set 中的一个特性:它不能存储重复元素。所以,我们可以通过将所有元素插入到 set 中,然后找到所有出现次数大于 1 的元素。

下面是示例代码:

#include <iostream>
#include <set>
#include <vector>

int main() {
  std::vector<int> nums = {1, 2, 3, 2, 4, 5, 1, 3};
  std::set<int> s;
  std::set<int> duplicates;

  for (auto i : nums) {
    if (s.count(i) == 1) {
      duplicates.insert(i);
    } else {
      s.insert(i);
    }
  }

  for (auto i : duplicates) {
    std::cout << i << " ";
  }
  std::cout << std::endl;

  return 0;
}

我们创建了一个包含重复元素的 std::vector,然后将所有元素插入到一个 std::set 中。如果插入时返回值为 1,则说明此前已经插入过该元素,将其插入到另外一个 set 中。最后,我们打印输出所有重复元素。

输出:

1 2 3
总结

使用 set 可以方便地获取一组数据中的唯一值,但如果需要获取重复项,也不难。只需要将所有元素插入到 set 中,然后找到所有出现次数大于 1 的元素即可。