cpp/algorithm/ranges/upper bound

@1@ Returns an iterator pointing to the first element in the range that is greater than, or  if no such element is found. The range must be partitioned with respect to the expression or, i.e., all elements for which the expression is  must precede all elements for which the expression is. A fully-sorted range meets this criterion.

@2@ Same as, but uses as the source range, as if using  as  and  as.

Return value
Iterator pointing to the first element that is greater than, or if no such element is found.

Complexity
The number of comparisons and applications of the projection performed are logarithmic in the distance between and  (at most $log 2(last - first) + O(1)$ comparisons and applications of the projection). However, for an iterator that does not model, the number of iterator increments is linear.