मेरे पास एक वेक्टर है जिसमें सकारात्मक पूर्णांक और -1 शामिल हैं। मेरी समस्या यह है कि मैं वेक्टर को सॉर्ट करना चाहता हूं लेकिन को std::sort
का उपयोग करके स्पर्श न करें (मुझे इसे हल करने के अन्य दृष्टिकोण पता हैं)।std :: वेक्टर को कैसे क्रमबद्ध करें लेकिन std :: sort का उपयोग करके विशिष्ट तत्वों को परिवर्तित न करें?
उदाहरण के लिए:
इनपुट: [-1, 150, 190, 170, -1, -1, 160, 180]
आउटपुट: [-1, 150, 160, 170 , -1, -1, 180, 190]
यह मेरा विचार इसे हल करने के लिए है, लेकिन यह काम नहीं किया:
sort(myVector.begin(), myVector.end(), [&](const int& a,const int& b)->bool {
if (a == -1 || b == -1)
return &a < &b;
return a < b;
});
मेरा आउटपुट है: [-1, 150, 170, 1 9 0, -1, -1, 160, 180]
आउटपुट होना चाहिए: [-1, 150, 160, 170, -1, -1 , 180, 1 9 0]
क्या std::sort
का उपयोग करके इसे हल करने का कोई विचार है?
मुझे नहीं लगता कि यह सीधे संभव है: वैकल्पिक,,
-1
रों के स्थानों को निकालने मिटा सभी-1
रों वेक्टर सॉर्ट और पुन: लगाएं जहां उपयुक्त हो रहा है। 'Std :: sort' फ़ंक्शन एक सीमा पर चल रहा है और अस्थायी रूप से तत्वों को निकालने का तरीका नहीं है और बाद में उन्हें उसी स्थिति में वापस जोड़ना है (बेशक आप इसे कई चरणों में कर सकते हैं लेकिन मेरा मानना है कि यह नहीं है आप पूछ रही हो)। मैं "std :: sort'" कस्टमाइज़ "का मतलब भी प्राप्त नहीं करता हूं। और यह भी कि कैसे 'std :: sort' works कार्यान्वयन को AFAIK परिभाषित किया गया है ताकि आप ऑर्डरिंग के तरीके के बारे में कोई अनुमान नहीं लगा सकें। – Yashas@Yashas मेरी अंग्रेजी के लिए खेद है, आप सही हैं, मैंने अपना प्रश्न संपादित किया –
'-1' के वेक्टर में स्थान निकालें, सभी '-1' मिटाएं, क्रमबद्ध करें और उन्हें वापस पाइप करें। – Ron