C++中repeated元素的处理技巧

avatar
作者
筋斗云
阅读量:0

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

  1. 使用集合(set)或无序集合(unordered_set): 集合和无序集合都会自动去除重复元素。你可以将元素插入这些容器中,然后从中读取不重复的元素。
#include<iostream> #include <set> #include<vector>  int main() {     std::vector<int> numbers = {1, 2, 3, 4, 4, 5, 6, 6, 7};     std::set<int> unique_numbers(numbers.begin(), numbers.end());      for (int num : unique_numbers) {         std::cout<< num << " ";     }     return 0; } 
  1. 使用算法(unique): C++标准库提供了一个名为unique的算法,它可以移除连续的重复元素。注意,这个算法只能用于已排序的序列。
#include<iostream> #include<vector> #include<algorithm>  int main() {     std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7};     std::sort(numbers.begin(), numbers.end()); // 先对数组进行排序     auto last = std::unique(numbers.begin(), numbers.end()); // 移除连续重复元素     numbers.erase(last, numbers.end()); // 删除多余的元素      for (int num : numbers) {         std::cout<< num << " ";     }     return 0; } 
  1. 使用双重循环: 如果你不想使用额外的数据结构或算法,可以使用双重循环来检查并删除重复元素。
#include<iostream> #include<vector>  int main() {     std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7};      for (size_t i = 0; i< numbers.size(); ++i) {         for (size_t j = i + 1; j< numbers.size();) {             if (numbers[i] == numbers[j]) {                 numbers.erase(numbers.begin() + j);             } else {                 ++j;             }         }     }      for (int num : numbers) {         std::cout<< num << " ";     }     return 0; } 

请注意,这些方法在处理大量数据时可能会有性能差异。在实际应用中,你可能需要根据具体情况选择最合适的方法。

广告一刻

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