मैं कैसे लेखक नोड्स लागू किया गया है को देखने के लिए EASTL's list class के माध्यम से जा रहा था। मेरी उम्मीद एक सरल वर्ग/संरचना थी। इसके बजाय, मुझे एक आधार और एक नोड दिखाई देता है जो इस आधार से विरासत में है (अभी भी सरल है, लेकिन दो वर्ग क्यों?)। उनकी यह टिप्पणी स्पष्टीकरण दें कि:,क्या सी ++ में एक टेम्पलेट प्रकार अपशिष्ट स्थान है?
हम ListNode (नीचे) से अलग से एक ListNodeBase परिभाषित क्योंकि यह हमें, इस तरह के डालने के रूप में गैर टेम्प्लेट ऑपरेशन को दूर (नीचे) की अनुमति देता है, और यह इतना है कि यह बनाता है सूची एंकर नोड में टी के साथ टी नहीं है, जो कचरा स्थान होगा और संभवतः अतिरिक्त टी 0 मौजूदा के कारण उपयोगकर्ता को आश्चर्यचकित कर देगा कि उपयोगकर्ता स्पष्ट रूप से नहीं बना था। इन सभी के लिए नकारात्मकता यह है कि यह एक सूची को डीबग देखने को कठिन बनाता है, यह देखते हुए कि नोड पॉइंटर्स प्रकार ListNodeBase हैं और ListNode नहीं हैं। हालांकि, नीचे ListNodeBaseProxy देखें।
मुझे यहां कुछ चीज़ों को समझ में नहीं आता है। I do इस बारे में समझें कि यह डीबग को थोड़ा कठिन क्यों बना देगा, लेकिन इसका मतलब list anchor node doesn't carry a T with it
और would waste space and possibly lead to surprising the user due to extra Ts existing that the user didn't explicitly create
से क्या है?
आप कोई डेटा नहीं के साथ एक सूची का उपयोग नहीं करते हैं। वहाँ एक भी नोड बुलाया ** लंगर नोड है ** या ** प्रहरी ** कि कुछ विशेष-केस खाली सूचियों के साथ जुड़े कोड को खत्म करने की सूची के प्रत्येक उदाहरण में मौजूद है, यहां तक कि खाली सूची में,। यह एक ऐसा नोड है जिसमें उपयोगकर्ता का डेटा शामिल करने की आवश्यकता नहीं है। –
@ एनएम। वह वर्ग 'सूची' होगा, आप ओपी पोस्ट किए गए लिंक पर कार्यान्वयन पर एक नज़र डाल सकते हैं। चूंकि 'सूची' स्वयं ही सेंटीनेल है, इसलिए बिंदु मंथन है। – littleadv
मैंने देखा है। जहाँ तक मेरा बता सकते हैं, 'list' *,' base_node_type mNode में शामिल * प्रहरी, 'लाइन। –