मैं मान सकते हैं कि किसी भी प्रकार T
के लिए, प्रकार std::list<T>
एक ही, लगातार आकार होगा? बस इसे स्पष्ट करने के लिए, मेरा मतलब केवल 'मुख्य' प्रकार का आकार ही है, न कि इसके द्वारा आवंटित स्मृति का।sizeof सकता है (std :: सूची <T>) टी के विभिन्न प्रकार के लिए अलग-अलग हो?
यह मानना मेरे लिए तार्किक लगता है कि T
का आकार केवल आवंटक का उपयोग करके आवंटित सूची नोड्स के आकार को प्रभावित करना चाहिए।
हालांकि, वहाँ दो चीजें हैं जो sizeof(std::list<T>)
की variancy मैं के बारे में सोच सकते हैं के कारण हो सकता है:
- एक मानक सी ++ पुस्तकालय 'अनुकूलन'
std::list<T>
में हीT
उदाहरणों में से कुछ रख करstd::list
प्रकार की कोशिश कर रहा । यह मेरे लिए एक बुरा विचार प्रतीत होता है, और यह मानक द्वारा रखी गई 'निरंतर समय' आवश्यकताओं को तोड़ देता है; - एक मानक सी ++ विशेषज्ञताओं विभिन्न आकारों होने के साथ कुछ प्रकार के
std::list<T>
के पुस्तकालय विशेषज्ञताओं, हो रही है।
मैं (1) या (2) के लिए किसी भी उपयोग के बारे में नहीं सोच सकता लेकिन मैं गलत हो सकता हूं।
क्या मैं प्राप्त करने के अंदर std::list<T>
का उपयोग कर एक टेम्पलेट वर्ग के लिए एक निश्चित-आकार टुकड़ा संभाजक उपयोग कर रहा है के बारे में सोच रहा हूँ।
एक नोट के रूप में: इस T
के विभिन्न प्रकार के विचरण के बारे में है, और नहीं अलग allocators के लिए। मैं सभी instantiations का एक स्पष्ट नियंत्रण होगा, और वे सभी std::allocator
का प्रयोग करेंगे।
दिलचस्प, +1। मुझे पूरा यकीन है कि मानक एक ही आकार की गारंटी नहीं देता है, लेकिन फिर भी +1 और सिर्फ एक टिप्पणी :) –
मैंने 'सूची' की बजाय 'वेक्टर' के बारे में इस सोच के बारे में सोचा, लेकिन इसमें 'टी *' , और सभी पॉइंटर्स एक ही आकार के नहीं हैं ... ठीक है, मैं पूरी तरह से सुनिश्चित नहीं हूं कि आप सदस्य फ़ंक्शंस का कंटेनर कैसे बना सकते हैं, लेकिन ... – BoBTFish
@BoBTFish - सभी पॉइंटर्स एक ही आकार के हैं। –