शायद मैं lower bound
की तकनीकी परिभाषा को गलत समझ रहा हूं लेकिन मुझे उम्मीद है कि मेरे पास a = { 0, 3, 4 }
सेट है और a.lower_bound(2)
की गणना की गई है कि परिणाम 0
होगा। अर्थात। मैं उम्मीद std::set::lower_bound
infimumstd :: set :: lower_bound (x) (प्रभावी रूप से) सबसे बड़ी संख्या <= x की बजाय सबसे छोटी संख्या> = x के रूप में परिभाषित क्यों किया गया है?
की गणितीय अवधारणा के करीब हैं और फिर भी मानक पुस्तकालय सबसे बड़ी संख्या की तुलना में (प्रभावी रूप से >=
) x कम नहीं के रूप में यह परिभाषित करता है।
इसके पीछे तर्क क्या है?
यह शायद अधिक iterators की सीमाओं के आधार पर विचार करने के लिए आम है, इसलिए जब आप कहते हैं कि "मैं 2 और 5 के बीच सब कुछ चाहता हूं" इटेटरेटर रिटर्न निम्न "बाधा" है। हालांकि सवाल यह है कि आप अन्यथा ऐसा क्यों उम्मीद करेंगे? इसके पीछे/आपका/तर्क क्या है? – PlasmaHH
उत्कृष्ट उत्तर के अतिरिक्त, आप 'std :: prev (iter)' '' iter! = X' का उपयोग करके केवल न्यूनतम प्राप्त कर सकते हैं। –
सुधार - "... मानक लाइब्रेरी इसे ** सबसे छोटी ** संख्या से कम नहीं बताती है ..." @ कोनराड रुडॉल्फ का सुझाव अच्छा है लेकिन पहले आपको 'सेट' को खाली करने की भी आवश्यकता नहीं है।'Std :: lower_bound' मुक्त फ़ंक्शन के लिए, आप "त्रुटि" की दिशा को उलट करने के लिए' रिवर्स_इटरेटर और 'std :: big' का भी उपयोग कर सकते हैं। – Potatoswatter