溫馨提示×

如何在C++中處理repeated元素

c++
小樊
113
2024-09-14 09:39:38
欄目: 編程語言

在 C++ 中,處理重復元素的方法有很多種

  1. 使用標準庫容器(如 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;
}
  1. 使用 std::unordered_setstd::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;
}
  1. 使用 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;
}

這些方法都可以用于處理重復元素,你可以根據實際需求選擇合適的方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女