![]() |
Home | Libraries | People | FAQ | More |
template<class ForwardRange, class Value> typename range_iterator<ForwardRange>::type upper_bound(ForwardRange& rng, Value val); template< range_return_value re, class ForwardRange, class Value > typename range_return<ForwardRange, re>::type upper_bound(ForwardRange& rng, Value val);
The versions of upper_bound
that return an iterator, returns the first iterator in the range rng such that: without predicate -
val <
*i
is true, with predicate
- pred(val, *i) is true.
end(rng)
is returned if no such iterator exists.
The versions of upper_bound
that return a range_return,
defines found in the
same manner as the returned iterator described above.
Defined in the header file boost/range/algorithm/upper_bound.hpp
For the non-predicate versions:
ForwardRange is a model
of the Forward Range
Concept.
Value is a model of
the LessThanComparableConcept.
Value
is a strict weak ordering,
as defined in the LessThanComparableConcept
requirements.
ForwardRange's value
type is the same type as Value.
For the predicate versions:
ForwardRange is a model
of the Forward Range
Concept.
BinaryPredicate is
a model of the StrictWeakOrderingConcept.
ForwardRange's value
type is the same type as Value.
ForwardRange's value
type is convertible to both of BinaryPredicate's
argument types.
For the non-predicate versions:
rng is sorted in ascending
order according to operator<.
For the predicate versions:
rng is sorted in ascending
order according to pred.
For ranges that model the Random
Access Range Concept the complexity is O(log N),
where N is distance(rng).
For all other range types the complexity is O(N).