2010-11-05 11 views

उत्तर

16

std::sort बराबर तत्वों के क्रम को सुरक्षित नहीं करता है, std::stable_sort करता है। हालांकि, int रों के मामले में आप अंतर नोटिस नहीं होगा जब तक आप निम्न उदाहरण में के रूप में कुछ गैर तुच्छ आदेश का उपयोग करें:

struct half_less 
{ 
    bool operator()(int a, int b) const { return (a/2) < (b/2); } 
}; 

std::sort(begin, end, half_less()); 
+0

नहीं (ए/2) <(बी/2) एक <बी के समान है? – Zebrafish

+0

@ ज़ेब्राफिश नहीं, उदाहरण के लिए एक = 2 ​​और बी = 3 – vitaut

+0

आह हाँ पर विचार करें। धन्यवाद। – Zebrafish

5

@vitaut सही है। मैं सिर्फ यह जोड़ना चाहता हूं कि आप नोटिस नहीं करेंगे कि बराबर पूर्णांक का क्रम बदल दिया गया है या नहीं। यह केवल तभी मायने रखता है जब आप मूल्यों को क्रमबद्ध करते हैं जो इंडेंटिंग संपत्ति होती है। उदाहरण के लिए यदि आप पूर्णांक के लिए पॉइंटर्स को पूर्णांक और सॉर्ट करते हैं।

+0

+1: प्रश्न पढ़ने के दौरान मैंने सोचा था :) –

+0

दाएं, या यदि तुलना करने वाले मज़ेदार द्वारा प्रदान किए गए कुछ गैर-तुच्छ क्रम का उपयोग किया जाता है। – vitaut

+0

@ विटॉट: क्या आप "गैर-तुच्छ क्रम" का उपयोग उन चींटियों के लिए कर सकते हैं जो इस तरह की गैर-स्थिरता का पता लगाएंगे? –

संबंधित मुद्दे