Defined in header <algorithm> template< class ForwardIt, class T >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value ); (1) template< class ForwardIt, class T, class Compare >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value, Compare comp ); (2)
Returns an iterator pointing to the first element in the range [first, last) that is greater than value.
The range [first, last) must be at least partially ordered