असल में मैं मूल्यों के समूह से सबसे छोटे (सकारात्मक) मूल्य की खोज करना चाहता हूं और पहले की तुलना करने के लिए डिफ़ॉल्ट मान की आवश्यकता है। भरोसेमंद धारणा होगी, वे हमेशा "से कम" की तुलना करें (NaN को छोड़कर, लेकिन उन पर विचार न करें) लेकिन मुझे पूरा यकीन नहीं है।मनमाने ढंग से फ़्लोटिंग पॉइंट मान अनंतता की तुलना कैसे करते हैं?
मैं 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;
}
}
आप अपने प्रारंभिक मूल्य के रूप में पहले मान का भी उपयोग कर सकते हैं। यदि आप अनंतता में डालते हैं तो यह अभी भी काम करेगा; मैं बस यह इंगित कर रहा हूं कि आपको एक विशेष आंतरिक मूल्य का उपयोग करने के लिए वास्तव में * आवश्यकता नहीं है। –
लूप से 'i' खींचने और खाली संग्रह के लिए अतिरिक्त जांच जोड़ने के साथ, मैं कर सकता था। लेकिन क्या यह सवाल बेकार नहीं होगा? ;) – kiw
'std :: min_element' का उपयोग करें और इसे इस तरह की चीजों के बारे में चिंता करने दें? –