阅读量:0
在 C++ 中,处理重复元素的方法有很多种
- 使用标准库容器(如
std::vector
、std::set
、std::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; }
- 使用
std::unordered_set
或std::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; }
- 使用
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; }
这些方法都可以用于处理重复元素,你可以根据实际需求选择合适的方法。