基本上我想從一堆值中搜索最小值(正值),並需要一個默認值與第一個值進行比較。天真的假設是,他們總是比較「小於」(除NaNs,但我們不考慮這些),但我不太確定。任意浮點值如何與無窮大進行比較?
我使用的是float
類型,我認爲可以安全地假設我的目標硬件實現了無窮大值。
下面是一些示例代碼:
auto leastValue = std::numeric_limits<float>::infinity();
for (auto i = something.begin(), e = something.end(); i != e; ++i)
{
auto value = (*i)->GetValue();
if (value < leastValue)
{
leastValue = value;
}
}
您也可以使用第一個值作爲初始值。如果你投入無窮大,它很可能仍然有效;我只是指出,你實際上並不需要*使用特殊的初始值。 – 2011-01-13 00:33:12
把`i`從循環中拉出來,併爲空集合添加一個額外的檢查,我就可以。但是會不會使問題變得無用? ;) – kiw 2011-01-13 00:39:10