C++ Algorithm partition()

2024年8月30日 | 阅读4分钟

C++ Algorithm partition() 函数用于根据其参数中提到的给定谓词(条件)对元素进行分区。如果容器被分区,则此函数返回 true,否则返回 false。

语法

参数

first:指向要分区的范围中第一个元素的双向迭代器。

last:指向要分区的范围中最后一个元素之后的双向迭代器。

pred:一个用户定义的一元谓词函数,它定义了如果一个元素要被分类则需要满足的条件。

返回值

此函数返回一个迭代器,指向不满足谓词条件的范围的第一个元素。

复杂度

复杂度在范围 [first, last) 内呈线性关系:对每个元素应用谓词,并可能交换其中一些元素。

数据竞争

范围 [first, last) 中的对象被修改。

异常

如果元素交换或迭代器操作抛出异常,此函数将抛出异常。

请注意,无效参数会导致未定义行为。

示例 1

让我们看一个简单示例来演示 partition() 的用法

输出

odd elements: 1 9 3 7 5
even elements: 6 4 8 2

在上面的示例中,元素 1 到 9 被分区为偶数和奇数。

示例 2

让我们看另一个简单示例

输出

Vector v1 is ( 4 10 7 8 0 5 2 1 6 9 3 ).
The partitioned set of elements in v1 is: ( 9 10 7 8 6 5 2 1 0 4 3 ).

示例 3

让我们看另一个简单示例,使用 partition() 函数对向量元素进行快速排序

输出

Original vector:
    0 1 2 3 4 5 6 7 8 9 
Partitioned vector:
    0 8 2 6 4  * 5 3 7 1 9 
Unsorted list:
    1 30 -4 3 5 -4 1 6 -8 2 -5 64 1 92 
Sorted using quicksort:
    -8 -5 -4 -4 1 1 1 2 3 5 6 30 64 92

示例 4

让我们看另一个简单示例

输出

Before Partition: 1 2 3 4 5 
After partition: 4 2 3 1 5 

Is it partitioned?
Yes, it is partitioned

下一主题C++ 算法