在 C++ 中,處理重復(repeated)數據的一種高效方法是使用標準庫中的關聯容器和算法
std::set
或 std::unordered_set
存儲不重復元素:#include<iostream>
#include <set>
#include<vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9};
std::set<int> unique_numbers;
for (const auto& num : numbers) {
unique_numbers.insert(num);
}
for (const auto& num : unique_numbers) {
std::cout<< num << " ";
}
return 0;
}
std::unique
和 std::vector
刪除連續重復元素:#include<iostream>
#include<vector>
#include<algorithm>
int main() {
std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 9};
numbers.erase(std::unique(numbers.begin(), numbers.end()), numbers.end());
for (const auto& num : numbers) {
std::cout<< num << " ";
}
return 0;
}
std::remove_if
和自定義謂詞刪除滿足特定條件的元素:#include<iostream>
#include<vector>
#include<algorithm>
bool is_even(int num) {
return num % 2 == 0;
}
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
numbers.erase(std::remove_if(numbers.begin(), numbers.end(), is_even), numbers.end());
for (const auto& num : numbers) {
std::cout<< num << " ";
}
return 0;
}
std::count
和 std::find
查找重復元素:#include<iostream>
#include<vector>
#include<algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9};
for (const auto& num : numbers) {
if (std::count(numbers.begin(), numbers.end(), num) > 1) {
std::cout << "Repeated number: "<< num<< std::endl;
}
}
return 0;
}
這些示例展示了如何在 C++ 中高效地處理重復數據。根據你的需求,可以選擇合適的方法來解決問題。