numeric_limits特性应该是一种获取各种类型信息的通用方式,可以执行以下操作:
template<typename T>
T min(const std::vector<T>& vect)
{
T val = std::numeric_limits<T>::min();
for(int i=0 ; i<vect.size() ; i++)
val = max(T, vect[i]);
return val;
}
问题在于(至少在使用MS Visual Studio 2008时),numeric_limits<int>::min()返回最小的负数,而numeric_limits<double>::min()返回最小的正数!
是否有人知道这种设计背后的原理?有没有更好的(推荐的)使用numeric_limits的方法?在我上面特定的函数中,我当然可以将T初始化为vect [0],但那不是我想要的答案..
另请参阅(浮点特定)讨论此处