如何高效處理C++中的repeated

c++
小樊
81
2024-09-14 09:51:06

在 C++ 中,處理重復(fù)(repeated)數(shù)據(jù)的一種高效方法是使用標(biāo)準(zhǔn)庫(kù)中的關(guān)聯(lián)容器和算法

  1. 使用 std::setstd::unordered_set 存儲(chǔ)不重復(fù)元素:
#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;
}
  1. 使用 std::uniquestd::vector 刪除連續(xù)重復(fù)元素:
#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;
}
  1. 使用 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;
}
  1. 使用 std::countstd::find 查找重復(fù)元素:
#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++ 中高效地處理重復(fù)數(shù)據(jù)。根據(jù)你的需求,可以選擇合適的方法來(lái)解決問(wèn)題。

0