基本的には、値の束から最小の(正の)値を検索し、最初の値と比較するためにデフォルト値が必要です。純粋な前提は、彼らが常にと比較して「より小さい」(NaNを除いて、それらを考慮しません)ですが、私は確信していません。任意の浮動小数点値はどのように無限大と比較されますか?
私はfloat
タイプを使用しています。ターゲットハードウェアが無限大を実装していると見なすことができます。
は、ここではいくつかのサンプルコードです:IEEE 754個の浮動小数点数については
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;
}
}
また、最初の値を初期値として使用することもできます。あなたが無限に置くなら、それはおそらくまだ機能します。私はちょうどあなたが実際に特別なinital値を使用する必要はないことを指摘しています。 –
ループから 'i'を引き出し、空のコレクションの追加チェックを追加することで、できました。しかし、それは問題を役に立たなくするでしょうか? ;) – kiw
'std :: min_element'を使って、そのようなことを心配させますか? –