如何在C++中处理repeated元素

avatar
作者
筋斗云
阅读量:0

在 C++ 中,处理重复元素的方法有很多种

  1. 使用标准库容器(如 std::vectorstd::setstd::multiset):
#include<iostream> #include<vector> #include<algorithm>  int main() {     std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};      // 对数组进行排序     std::sort(numbers.begin(), numbers.end());      // 删除重复元素     auto last = std::unique(numbers.begin(), numbers.end());     numbers.erase(last, numbers.end());      // 输出结果     for (const auto &number : numbers) {         std::cout<< number << " ";     }      return 0; } 
  1. 使用 std::unordered_setstd::unordered_multiset 来存储不重复或可重复的元素。
#include<iostream> #include <unordered_set>  int main() {     std::unordered_set<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3};      // 输出结果     for (const auto &number : numbers) {         std::cout<< number << " ";     }      return 0; } 
  1. 使用 std::remove_if 和自定义条件删除重复元素。
#include<iostream> #include<vector> #include<algorithm>  bool is_duplicate(int value, const std::vector<int> &numbers, int index) {     for (int i = 0; i< index; ++i) {         if (numbers[i] == value) {             return true;         }     }     return false; }  int main() {     std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3};      // 删除重复元素     numbers.erase(std::remove_if(numbers.begin(), numbers.end(), [&](int value) {         return is_duplicate(value, numbers, std::distance(numbers.begin(), std::find(numbers.begin(), numbers.end(), value)));     }), numbers.end());      // 输出结果     for (const auto &number : numbers) {         std::cout<< number << " ";     }      return 0; } 

这些方法都可以用于处理重复元素,你可以根据实际需求选择合适的方法。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!