2011-11-29 14 views
5

क्या सी ++ में एक स्टडी कंटेनर है जो एक वेक्टर और एक लिंक्ड सूची के बीच एक संकर की तरह कार्य करता है। मेरा मतलब है कि एक डेटा संरचना है जो std :: वेक्टर और संभावित अतिरिक्त स्मृति आवंटन के लगातार पुनर्विक्रय ओवरहेड पर विजय प्राप्त करती है, इसके बजाय जब संरचना अंतरिक्ष से बाहर हो जाती है तो यह अगले आवंटित खंड में एक सूचक जोड़ती है, और केवल तभी जब टुकड़ों की संख्या तक पहुंच जाती है एक निश्चित मूल्य, पूरी संरचना को निरंतर नए खंड में विभाजित किया जाता है और टुकड़ों की संख्या 0सी ++ वेक्टर/लिंक्ड सूची हाइब्रिड

+0

क्या आपने 'std :: deque' पर एक नज़र डाली है? क्या यह आपकी आवश्यकताओं के अनुरूप है? – Asha

+0

मुझे लगता है कि 'std :: deque' इस तरह से काम करता है, लेकिन मुझे यकीन नहीं है। – Constantinius

+0

@ कॉन्स्टेंटिनीस मैंने हमेशा सोचा था कि 'std :: deque' सिर्फ एक प्रकार का रिंगबफर था और इस प्रकार इसकी स्मृति आवंटन व्यवहार में 'std :: vector' के समान था। –

उत्तर

3

std::deque आपके वर्णन के लिए निकटतम मानक कंटेनर है। यह बिल्कुल इस तरह नहीं है, हालांकि (उदाहरण के लिए, यह सरणी की एक सूची के बजाय सरणी की सरणी होना चाहिए क्योंकि बाद वाले निरंतर समय तक पहुंच की अनुमति नहीं होगी)।

आपकी व्यावहारिक आवश्यकताओं के आधार पर, यह काफी करीब हो सकता है।

+0

तो मैं मूल रूप से एक डेक का उपयोग कर सकता हूं और केवल कुछ खंडों को जोड़ सकता हूं जिन्हें एक निश्चित स्तर के टुकड़े तक पहुंचने के बाद इसे डिफ्रैगमेंट करने की आवश्यकता होती है। यह विचार स्वाभाविक रूप से मेमोरी होप्स और कैश मिस को खत्म करने के लिए है ... – dtech

4

जैसा कि पहले से ही कहा गया है, std::deque आपकी आवश्यकताओं के करीब आता है। मैं सिर्फ std::vector और std::deque के बीच इस तुलना को जोड़ना चाहता हूं जो मुझे बहुत उपयोगी पाया। An In-Depth Study of the STL Deque Container