在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函数,可以方便地对容器中的元素进行重新排列。