std::min (3) - Linux Manuals
std::min: std::min
NAME
Synopsis
Defined in header <algorithm>
template< class T > (until C++14)
const T& min( const T& a, const T& b );
template< class T > (since C++14)
constexpr const T& min( const T& a, const T& b );
template< class T, class Compare > (until C++14)
const T& min( const T& a, const T& b, Compare comp );
template< class T, class Compare > (since C++14)
constexpr const T& min( const T& a, const T& b, Compare comp ); (1)
template< class T > (since C++11)
T min( std::initializer_list<T> ilist ); (2) (until C++14)
template< class T > (since C++14)
constexpr T min( std::initializer_list<T> ilist ); (3)
template< class T, class Compare > (since C++11)
T min( std::initializer_list<T> ilist, Compare comp ); (4) (until C++14)
template< class T, class Compare > (since C++14)
constexpr T min( std::initializer_list<T> ilist, Compare comp );
Returns the smaller of the given values.
1-2) Returns the smaller of a and b.
3-4) Returns the smallest of the values in initializer list ilist.
The (1,3) versions use operator< to compare the values, the (2,4) versions use the given comparison function comp.
Parameters
a, b - the values to compare
ilist - initializer list with the values to compare
cmp - While the signature does not need to have const &, the function must not modify the objects passed to it and must be able to accept all values of type (possibly const) Type1 and Type2 regardless of value_category (thus, Type1 & is not allowed
Type requirements
-
T must meet the requirements of LessThanComparable in order to use overloads (1,3).
-
T must meet the requirements of CopyConstructible in order to use overloads (3,4).
Return value
1-2) The smaller of a and b. If the values are equivalent, returns a.
3-4) The smallest value in ilist. If several values are equivalent to the smallest, returns the leftmost such value.
Complexity
1-2) Exactly one comparison
3-4) Exactly ilist.size() - 1 comparisons
Possible implementation
First version
Second version
Third version
Fourth version
Warning
Capturing the result of std::min by reference if one of the parameters is rvalue produces a dangling reference if that parameter is returned:
Example
// Run this code
Output:
See also