| |
|
Category: algorithms | | Component type: function |
Prototype
Is_sorted
is an overloaded name; there are actually two is_sorted
functions.
template <class ForwardIterator>
bool is_sorted(ForwardIterator first, ForwardIterator last)
template <class ForwardIterator, class StrictWeakOrdering>
bool is_sorted(ForwardIterator first, ForwardIterator last,
StrictWeakOrdering comp)
Description
Is_sorted
returns true
if the range [first, last)
is sorted in ascending order, and false
otherwise.
The two versions of is_sorted
differ in how they define whether one element is less than another. The first version compares objects using operator<
, and the second compares objects using the functors comp
. The first version of is_sorted
returns true
if and only if, for every iterator i
in the range [first, last - 1)
, *(i + 1) < *i
is false
. The second version returns true
if and only if, for every iterator i
in the range [first, last - 1)
, comp(*(i + 1), i)
is false
Definition
Defined in algo.h.
Requirements on types
For the first version:
For the second version:
-
ForwardIterator
is a model of ForwardIterator.
-
StrictWeakOrdering
is a model of StrictWeakOrdering.
-
ForwardIterator
's value type is convertible to StrictWeakOrdering
's argument type.
Preconditions
-
[first, last)
is a valid range.
Complexity
Linear. Zero comparisons if [first, last)
is an empty range, otherwise at most (last - first) - 1
comparisons.
Example
int A[] = {1, 4, 2, 8, 5, 7};
const int N = sizeof(A) / sizeof(int);
assert(!is_sorted(A, A + N));
sort(A, A + N);
assert(is_sorted(A, A + N));
Notes
See also
sort
, stable_sort
, partial_sort
, partial_sort_copy
, sort_heap
, binary_search
, lower_bound
, upper_bound
, less<T>
, StrictWeakOrdering, LessThanComparable