c++ - Why does std::max return the wrong value? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 जवाब

से सत्र में सीपीसीएन 2014, समिति के सदस्य वाल्टर ब्राउन ने उल्लेख किया था कि std :: अधिकतम इस मामले में गलत मान देता है कि दोनों तर्कों का बराबर मूल्य है।

यह टिप्पणी के बिना स्वीकार किया गया था, इसका मतलब क्या था? अगर यह

यदि न्यूनतम और

हालांकि, न्यूनतम और अधिकतम का उपयोग किया जाता है पूर्वनिर्धारित सेटों पर: सेट जिसमें आप दो तत्व हो सकते हैं जो एक जैसे बिना समान सॉर्ट करते हैं। उदाहरण के लिए, आप जोड़ सकते हैं:

  स्ट्रक्चर छात्र {char * name; Int ग्रेड; };  

और s1 & lt; S2 जब strcmp (s1- & gt; नाम, s2- & gt; नाम) & lt; 0 । फिर एक ही नाम के साथ दो छात्र, लेकिन अलग-अलग ग्रेड समान तरह होंगे। इस तरह के दो तत्वों को (पूर्व) क्रम संबंध के लिए समकक्ष कहा जाता है।

एक पूर्वनिर्धारित सेट पर तर्क दिया जाता है, न्यूनतम दो बराबर के तत्वों को पहले पैरामीटर वापस करना चाहिए, और अधिकतम को दूसरा वापस करना चाहिए यह परिभाषा कुछ गुणों को बरकरार रखती है जो आपको अपेक्षा थी, सबसे खासकर

  • जोड़ी ( मिनट (x, y) , अधिकतम (x, y) ) या तो है ( x , y ) या ( y , x ),

और

  • यदि x और y अलग हैं, तो न्यूनतम (x, y) और अधिकतम (x, y) अलग हैं,

और

  • फ़ंक्शन है कि नक्शे ( एक्स , y ) से ( न्यूनतम (x, y) , अधिकतम (x, y) ) एक स्थिर सॉर्टिंग है दो तत्वों के सेट के लिए फ़ंक्शन।

यह एक नया विचार नहीं है, और प्रोग्रामिंग के कई मानक ग्रंथों में मेरा खदान से बेहतर स्पष्टीकरण मिलेगा Mat और juanchopanza द्वारा पहले से ही उद्धृत, अध्याय 7, एक अच्छा स्रोत है अगर आपको सी ++ सिंटैक्स पसंद है।


Comments