通用工具函数。
std::max 链接
//定义于头文件 <algorithm> //(1) template< class T > const T& max( const T& a, const T& b ); //(C++14 前) template< class T > constexpr const T& max( const T& a, const T& b ); //(C++14 起) //(2) template< class T, class Compare > const T& max( const T& a, const T& b, Compare comp ); //(C++14 前) template< class T, class Compare > constexpr const T& max( const T& a, const T& b, Compare comp ); //(C++14 起) //(3) template< class T > T max( std::initializer_list<T> ilist ); //(C++11 起) (C++14 前) template< class T > constexpr T max( std::initializer_list<T> ilist ); //(C++14 起) //(4) template< class T, class Compare > T max( std::initializer_list<T> ilist, Compare comp );//(C++11 起) (C++14 前) template< class T, class Compare > constexpr T max( std::initializer_list<T> ilist, Compare comp ); //(C++14 起)
注意:若参数之一是右值,且返回该参数,则以引用捕获 std::max (或者std::min ) 的结果会产生一个悬垂引用:
int n = 1; const int& r = std::max(n-1, n+1);
const int& r2 = std::min(n-1,n+1); // r,r2 为悬垂