C++中的std::is_sorted_until

C++中的std::is_sorted_until

std::is_sorted_until 用于查找范围[first, last)中第一个未排序的元素。它返回一个迭代器,指向范围中第一个未排序的元素,因此返回的迭代器和first之间的所有元素都是已排序的。
它还可用于计算范围内已排序元素的总数。它在头文件中定义。如果整个范围都已排序,则返回指向last的迭代器。

它可以通过以下两种方式使用:

**使用“ <”比较元素: **

语法:

template
ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);

first: 指向列表中第一个元素的前向迭代器。
last: 指向列表中最后一个元素的前向迭代器。

返回值: 返回指向列表中第一个未排序的元素的迭代器。
如果列表中只有一个元素或所有元素都已排序,则返回last。

// C++ program to demonstrate the use of std::is_sorted_until
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int v[] = { 1, 2, 3, 4, 7, 10, 8, 9 }, i;

    int* ip;

    // Using std::is_sorted_until
    ip = std::is_sorted_until(v, v + 8);

    cout << "There are " << (ip - v) << " sorted elements in "
          << "the list and the first unsorted element is " << *ip;

    return 0;
}  

输出:

There are 6 sorted elements in the list and the first unsorted element is 8

通过使用预定义函数进行比较:

语法:

template
ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last,
Compare comp);

这里,first和last与前一个示例相同。

comp: 接受范围内两个元素作为参数的二元函数,并返回可转换为bool的值。
返回的值指示是否将作为第一个参数传递的元素视为在其定义的特定严格弱排序中在第二个元素之前。

该函数不应修改任何参数。
此可以是函数指针或函数对象。

返回值: 返回指向列表中第一个未排序的元素的迭代器。
如果列表中只有一个元素或所有元素都已排序,则返回last。

// C++ program to demonstrate
// the use of std::nth_element
// C++ program to demonstrate the
// use of std::nth_element
#include <algorithm>
#include <iostream>
using namespace std;

// 定义Binary Function
bool comp(int a, int b) { return (a < b); }
int main()
{
    int v[] = { 1, 3, 20, 10, 45, 33, 56, 23, 47 }, i;
    int* ip;

    // Using std::is_sorted_until
    ip = std::is_sorted_until(v, v + 9, comp);

    cout << "There are " << (ip - v)
          << " sorted elements in "
          << "the list and the first unsorted element is "
          << *ip;

    return 0;
}  

输出:

There are 3 sorted elements in the list and the first unsorted element is 10

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程