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],但这不是我要寻找的答案..
另请参阅此处的(浮点特定)讨论