Пространства имён
Варианты
Действия

std::is_sorted

Материал из cppreference.com
< cpp‎ | algorithm

 
 
Алгоритмы
Функции
Немодифицирующие линейные операции
Модифицирующие линейные операции
Разделение
Сортировка (на отсортированных промежутках)
is_sorted(C++11)
is_sorted_until(C++11)
sort
Бинарный поиск (на отсортированных промежутках)
Множества (на отсортированных промежутках)
Куча
Минимум/максимум
Числовые операции
Библиотека C
 
Определено в заголовочном файле <algorithm>
template< class ForwardIt >
bool is_sorted( ForwardIt first, ForwardIt last );
(1) (начиная с C++11)
template< class ForwardIt, class Compare >
bool is_sorted( ForwardIt first, ForwardIt last, Compare comp );
(2) (начиная с C++11)

Checks if the elements in range [first, last) are sorted in ascending order. The first version of the function uses operator< to compare the elements, the second uses the given comparison function comp.

Содержание

[править] Параметры

first, last -
диапазон элементов для изучения
Оригинал:
the range of elements to examine
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
comp - comparison function which returns ​true if the first argument is less than the second.

The signature of the comparison function should be equivalent to the following:

 bool cmp(const Type1 &a, const Type2 &b);

The signature does not need to have const &, but the function must not modify the objects passed to it.
Типы Type1 и Type2 должны быть таковы, что объект типа ForwardIt может быть разыменован и затем неявно преобразован в оба из них. ​

Требования к типам
-
ForwardIt должен соответствовать требованиям ForwardIterator.

[править] Возвращаемое значение

true if the elements in the range are sorted in ascending order

[править] Сложность

линейные по расстоянию между first и last
Оригинал:
linear in the distance between first and last
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возможная реализация

Первый вариант
template<class ForwardIt>
bool is_sorted(ForwardIt first, ForwardIt last)
{
    return std::is_sorted_until(first, last) == last;
}
Второй вариант
template<class ForwardIt, class Compare>
bool is_sorted(ForwardIt first, ForwardIt last, Compare comp)
{
    return std::is_sorted_until(first, last, comp) == last;
}

[править] Пример

#include <iostream>
#include <algorithm>
 
int main()
{
    const int N = 5;
    int digits[N] = {3, 1, 4, 1, 5};
 
    for (auto i : digits) std::cout << i << ' ';
    std::cout << ": is_sorted: " << std::is_sorted(digits, digits+N) << '\n';
 
    std::sort(digits, digits+N);
 
    for (auto i : digits) std::cout << i << ' ';
    std::cout << ": is_sorted: " << std::is_sorted(digits, digits+N) << '\n';
}

Вывод:

3 1 4 1 5 : is_sorted: 0
1 1 3 4 5 : is_sorted: 1

[править] См. также

находит наибольшее отсортированы поддиапазоне
Оригинал:
finds the largest sorted subrange
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]