iterator upper_bound( const Key& key );  (1)  
const_iterator upper_bound( const Key& key ) const;  (2)  
template< class K > iterator upper_bound( const K& x );  (3)  (since C++14) 
template< class K > const_iterator upper_bound( const K& x ) const;  (4)  (since C++14) 
key
.x
. This overload participates in overload resolution only if the qualifiedid Compare::is_transparent
is valid and denotes a type. It allows calling this function without constructing an instance of Key
.key    key value to compare the elements to 
x    alternative value that can be compared to Key 
Iterator pointing to the first element that is greater than key
. If no such element is found, pasttheend (see end()
) iterator is returned.
Logarithmic in the size of the container.
Featuretest macro  Comment 

__cpp_lib_generic_associative_lookup  for overloads (3,4) 
returns range of elements matching a specific key (public member function) 

returns an iterator to the first element not less than the given key (public member function) 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/set/upper_bound