在 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;
}
這些方法都可以用于處理重復元素,你可以根據實際需求選擇合適的方法。