2008-10-19 15 views
7

मैं एक लिंक्ड सूची है कि मैं का हिस्सा क्रमबद्ध करना चाहते हैं, उदाहरण के लिए की है। एक विशेषज्ञता std :: सूची :: सॉर्ट है, लेकिन यह केवल पूरी सूची को सॉर्ट कर सकता है। मुझे नहीं लगता कि मेरे पास कुछ लिखने के लिए सूची सदस्यों के पास पर्याप्त पहुंच है।आंशिक प्रकार :: सूची

क्या वेक्टर कहने के बिना ऐसा करने का कोई तरीका है?

+0

और वेक्टर के बजाय सूची का उपयोग करने का मुख्य कारण क्या है? तथ्य के बावजूद std :: वेक्टर को औसत पर कदम उठाना है। आधा तत्व (उदाहरण के लिए, हटाते समय), यह कैश के लिए बहुत तेज़ धन्यवाद है। std :: vector std :: सूची को लगातार हटाए जाने और रैंड पर डालने में भी धड़कता है। स्थिति। सूची का उपयोग करके आपको लाभ के लिए बहुत बड़ी संख्या में तत्व होना चाहिए। – relaxxx

+0

अच्छी तरह से मुझे याद नहीं है, क्योंकि साढ़े सालों में मैंने पूछा था कि मुझे पूरा यकीन है कि इसे किसी भी तरह से फिर से काम किया गया है और मैंने तब तक उस नौकरी को छोड़ दिया है। प्रश्न का मुद्दा दक्षता के बारे में इतना नहीं था (हालांकि एक उचित मौका है कि पर्याप्त डेटा था कि मैं इसे फ्लाई पर डुप्लिकेट नहीं करना चाहता था) लेकिन अधिक जिज्ञासा; यह अजीब लग रहा था कि मैं इस आंशिक प्रकार को करने में सक्षम नहीं था और यह कि इसे प्राप्त करने का कोई तरीका होना चाहिए। – Peter

+0

ओह: डी मेरा बुरा ... मैं खोज के माध्यम से इस प्रश्न में "सक्रिय प्रश्न पृष्ठ" के माध्यम से नहीं आया और उसे एहसास नहीं हुआ :) मैंने वास्तव में सोचा कि यह सक्रिय प्रश्न है। – relaxxx

उत्तर

12

एक स्टैंडअलोन सूची, में सॉर्ट किए गए सूची के हिस्से को अनचेक करने के बारे में, तो विशिष्ट सूची प्रकार का उपयोग करें, फिर इसे मूल सूची में वापस हुक करें?

+2

यह एक अच्छा विचार है। Splice() विधि की शक्ति को भूलना आसान है। – bk1e

+0

+1 यह करने का सबसे आसान तरीका है। – Nawaz

2

हां, लेकिन आपको merge sort का उपयोग करना होगा।

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