Heyho,जोड़े का एक वेक्टर छंटाई
मैं जोड़े का एक वेक्टर छँटाई के बारे में एक प्रश्न है:
std::vector<std::pair<double,Processor*>> baryProc;
इस सदिश पहले से ही जोड़े के साथ भरा है। अब मैं वेक्टर जोड़ी के अंदर डबल मूल्य के आधार पर अंदर जोड़े सॉर्ट करने के लिए चाहता था
उदाहरण:
लगता है मैं वेक्टर के अंदर 3 जोड़े की है। जोड़ी 1 आगे है और जोड़ी 3 अंत में है। जोड़ी 2 बीच में है:
pair1(1, proc1)
pair2(3, proc2)
pair3(2.5, proc3)
अब मैं जोड़े को डबल मान के आधार पर सॉर्ट करना चाहता हूं। ताकि वेक्टर के अंदर का आदेश है:
pair1(1, proc1)
pair3(2.5, proc3)
pair2(3, proc2)
मैं यह कैसे कर सकता हूं? मैं काफी अटक गया हूँ।
मदद
'std :: pair' के सामान्य कम-ऑपरेटर से '.second' तुलना को समाप्त करने का एक अच्छा उदाहरण +1 करता है। मैं इसके लिए एक मज़ेदार (इनलाइन करने की अधिक संभावना) पसंद करूंगा, लेकिन एक कार्यात्मक समाधान कम-से-कम काम करता है। – WhozCraig
इस अच्छी व्याख्या के लिए धन्यवाद। मुझे लगता है कि मानक तुलनित्र ठीक काम करेगा। यदि डबल मान अक्सर समान होते हैं तो ओपारेटर सॉर्ट सही होगा? उदाहरण: (1, proc1), (1, proc2), (2, proc3), (3, proc4), (3, proc5), .... – user2633791
@ user2633791 आप जो पूछ रहे हैं वह यह है कि सॉर्ट है [स्थिर] (http://en.wikipedia.org/wiki/Stable_sort#Stability)। एक सॉर्टिंग एल्गोरिदम स्थिर है यदि समान मूल्य वाले दो तत्व उसी क्रम में एक दूसरे के सापेक्ष एक ही क्रम में रहते हैं जैसे कि वे शुरुआत में थे। डिफ़ॉल्ट सॉर्ट एल्गोरिदम स्थिर नहीं है, लेकिन एसटीएल एक [स्थिर प्रकार] प्रदान करता है (http://www.cplusplus.com/reference/algorithm/stable_sort/) जो आपके उद्देश्यों के अनुरूप होना चाहिए। – maditya