c++中的partition()
时间: 2024-05-04 21:22:28 浏览: 30
在 C++ 中,`partition()` 是一个算法,用于对容器中的元素进行分区,将满足某个条件的元素放在容器的前部分,不满足的元素放在容器的后部分。它的原型如下:
```c++
template< class ForwardIt, class UnaryPredicate >
ForwardIt partition( ForwardIt first, ForwardIt last, UnaryPredicate p );
```
其中,`first` 和 `last` 分别表示容器中要分区的元素范围,`p` 是一个一元函数对象,用于指定分区的条件。
例如,以下代码使用 `partition()` 将容器中的奇数和偶数分开:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> nums{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto it = std::partition(nums.begin(), nums.end(), [](int i) { return i % 2 == 0; });
std::cout << "Odd numbers: ";
for (auto i = nums.begin(); i != it; ++i) {
std::cout << *i << " ";
}
std::cout << "\nEven numbers: ";
for (auto i = it; i != nums.end(); ++i) {
std::cout << *i << " ";
}
return 0;
}
```
输出结果为:
```
Odd numbers: 1 3 5 7 9
Even numbers: 2 4 6 8 10
```
可以看到,使用 `partition()` 将容器中的奇数和偶数成功分开,使得输出结果更加清晰。
阅读全文