阅读量:0
在C++中,处理重复元素的方法有很多种
- 使用集合(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; }
- 使用算法(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; }
- 使用双重循环: 如果你不想使用额外的数据结构或算法,可以使用双重循环来检查并删除重复元素。
#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; }
请注意,这些方法在处理大量数据时可能会有性能差异。在实际应用中,你可能需要根据具体情况选择最合适的方法。