C++ 算法 stable_partition()

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

C++ 算法 stable_partition() 函数用于对范围 [first, last) 中的元素进行分类,使得所有使 pred 返回 true 的元素都排在所有使其返回 false 的元素之前,同时保留元素的相对顺序。

注意:- 此函数通常使用内部临时缓冲区实现。

语法

参数

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

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

pred:一个用户定义的一元谓词函数,用于定义元素要分类时必须满足的条件。

返回值

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

复杂度

如果内存充足,则复杂性与范围 [first, last) 成线性关系:将谓词应用于每个元素。

数据竞争

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

异常

如果任何元素的比较、元素交换或迭代器操作引发异常,则此函数会引发异常。

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

示例 1

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

输出

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

在上面的例子中,1 到 9 的元素被分成偶数和奇数元素。

示例 2

让我们看另一个简单示例

输出

Vector v1 is ( 4 10 5 5 5 5 5 1 6 9 3 7 8 2 0 5 ).
The partitioned set of elements in v1 is:
 ( 10 6 9 7 8 4 5 5 5 5 5 1 3 2 0 5 ).
The first element in v1 to fail to satisfy the
 predicate greater5 is: 4.

示例 3

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

输出

3 2 4 5 7 0 0 0 0

示例 4

让我们看另一个简单示例

输出

0
3
6
12
9
1
4
5
7

下一主题C++ 算法