在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é)果。