Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2020. The current version is 1.90.0.
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); template< class ForwardRange, class Value, class SortPredicate > typename range_iterator<ForwardRange>::type upper_bound(ForwardRange& rng, Value val, SortPredicate pred); template< range_return_value re, class ForwardRange, class Value, class SortPredicate > typename range_return<ForwardRange,re>::type upper_bound(ForwardRange& rng, Value val, SortPredicate pred);
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).