温馨提示×

利用C++ partition解决实际问题案例

c++
小樊
85
2024-08-19 20:22:32
栏目: 编程语言

假设我们有一个数组,我们想要将所有正数移动到数组的前半部分,将所有负数移动到数组的后半部分。我们可以使用C++的partition函数来实现这个功能。

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {3, -2, 5, -1, 7, -4, 9, -6};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::partition(arr, arr + n, [](int x) {
        return x > 0;
    });

    std::cout << "After partitioning:" << std::endl;
    for (int i = 0; i < n; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的示例中,我们使用std::partition函数将正数移动到数组的前半部分,负数移动到数组的后半部分。最终输出的结果为:

After partitioning:
3 9 5 7 -1 -4 -2 -6 

可以看到,所有正数都被移动到了数组的前半部分,所有负数都被移动到了数组的后半部分。

0