C++ Algorithm is_sorted_until()

30 Aug 2024 | 3 分钟阅读

C++ 算法 is_sorted_until() 函数用于查找范围内的第一个未排序元素。这意味着它返回一个迭代器,指向范围 [first, last) 中不遵循升序的第一个元素。

第一个版本使用运算符 < 比较元素,第二个版本使用 comp 比较元素。

语法

参数

first:指向要检查范围中第一个元素的正向迭代器。

last:指向要检查范围中最后一个元素之后的随机访问迭代器。

comp:一个用户定义的二元谓词函数,接受两个参数,如果这两个参数有序则返回true,否则返回false。它遵循严格的弱排序来对元素进行排序。

返回值

如果范围未排序,它返回指向第一个元素的迭代器;如果整个范围已排序,则返回 last。

复杂度

复杂度在 first 和 last 之间是线性的:为每个元素调用 comp,直到找到不匹配项。

数据竞争

访问范围 [first, last) 中的对象。

异常

如果 comp 或迭代器上的操作抛出异常,此函数将抛出异常。

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

示例 1

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

输出

Before: is it sorted? false
After: is it sorted? true

示例 2

让我们看另一个简单示例

输出

First unsorted element = C
Entire vector is sorted.

示例 3

让我们看另一个简单示例

输出

First unsorted element = 3

示例 4

让我们看另一个简单示例

输出

foo: 2 3 4 1 (3 elements sorted)
foo: 2 3 1 4 (2 elements sorted)
foo: 2 1 4 3 (1 elements sorted)
foo: 2 1 3 4 (1 elements sorted)
foo: 1 4 3 2 (2 elements sorted)
foo: 1 4 2 3 (2 elements sorted)
foo: 1 3 4 2 (3 elements sorted)
foo: 1 3 2 4 (2 elements sorted)
foo: 1 2 4 3 (3 elements sorted)
foo: 1 2 3 4 (4 elements sorted)
the range is sorted!

下一主题C++ 算法