辅助函数 及 其他

通用工具函数。

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 为悬垂

原文地址:https://www.cnblogs.com/gardenofhu/p/9316385.html