C++ partition函數(shù)的使用技巧

c++
小樊
88
2024-08-19 20:14:32

在C++中,std::partition函數(shù)可以用來(lái)重新排列容器中的元素,將滿(mǎn)足指定條件的元素移動(dòng)到容器的前部,不滿(mǎn)足條件的元素移動(dòng)到容器的后部。其基本用法如下:

std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};

auto it = std::partition(vec.begin(), vec.end(), [](int i) { return i % 2 == 0; });

for (auto i = vec.begin(); i != it; ++i) {
    std::cout << *i << " ";
}

在上面的例子中,我們使用了std::partition函數(shù)將vec中的偶數(shù)元素移動(dòng)到前部,奇數(shù)元素移動(dòng)到后部。在lambda表達(dá)式中,我們指定了條件為i % 2 == 0,即i為偶數(shù)時(shí)返回true。partition函數(shù)會(huì)返回一個(gè)迭代器指向第一個(gè)不滿(mǎn)足條件的元素,我們可以通過(guò)這個(gè)迭代器將滿(mǎn)足條件的元素輸出。

另外,std::partition函數(shù)還可以接受一個(gè)謂詞函數(shù)作為參數(shù),用于指定條件。謂詞函數(shù)的定義可以是一個(gè)普通的函數(shù)或者lambda表達(dá)式。通過(guò)合理使用std::partition函數(shù),可以方便地對(duì)容器中的元素進(jìn)行重新排列。

0