在C++中,std::partition函數可以用來重新排列容器中的元素,將滿足指定條件的元素移動到容器的前部,不滿足條件的元素移動到容器的后部。其基本用法如下:
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函數將vec中的偶數元素移動到前部,奇數元素移動到后部。在lambda表達式中,我們指定了條件為i % 2 == 0,即i為偶數時返回true。partition函數會返回一個迭代器指向第一個不滿足條件的元素,我們可以通過這個迭代器將滿足條件的元素輸出。
另外,std::partition函數還可以接受一個謂詞函數作為參數,用于指定條件。謂詞函數的定義可以是一個普通的函數或者lambda表達式。通過合理使用std::partition函數,可以方便地對容器中的元素進行重新排列。