如何在C++中實(shí)現(xiàn)partition算法

c++
小樊
87
2024-08-19 20:13:33
欄目: 編程語言

在C++中,可以使用標(biāo)準(zhǔn)庫中的std::partition函數(shù)來實(shí)現(xiàn)partition算法。std::partition函數(shù)接受一個(gè)范圍的迭代器和一個(gè)謂詞函數(shù)作為參數(shù),并根據(jù)謂詞函數(shù)將范圍分割為兩部分,使得滿足謂詞函數(shù)的元素在前半部分,不滿足謂詞函數(shù)的元素在后半部分。以下是一個(gè)示例代碼:

#include <iostream>
#include <vector>
#include <algorithm>

bool isEven(int n) {
    return n % 2 == 0;
}

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    std::partition(nums.begin(), nums.end(), isEven);

    std::cout << "Partitioned array: ";
    for (int num : nums) {
        std::cout << num << " ";
    }

    return 0;
}

在上面的示例中,我們定義了一個(gè)isEven函數(shù)用來判斷一個(gè)整數(shù)是否為偶數(shù)。然后我們使用std::partition函數(shù)將nums數(shù)組按照isEven函數(shù)進(jìn)行分割,使得偶數(shù)在前半部分,奇數(shù)在后半部分。最后輸出分割后的結(jié)果。

0