क्या सी ++ में एक स्टडी कंटेनर है जो एक वेक्टर और एक लिंक्ड सूची के बीच एक संकर की तरह कार्य करता है। मेरा मतलब है कि एक डेटा संरचना है जो std :: वेक्टर और संभावित अतिरिक्त स्मृति आवंटन के लगातार पुनर्विक्रय ओवरहेड पर विजय प्राप्त करती है, इसके बजाय जब संरचना अंतरिक्ष से बाहर हो जाती है तो यह अगले आवंटित खंड में एक सूचक जोड़ती है, और केवल तभी जब टुकड़ों की संख्या तक पहुंच जाती है एक निश्चित मूल्य, पूरी संरचना को निरंतर नए खंड में विभाजित किया जाता है और टुकड़ों की संख्या 0सी ++ वेक्टर/लिंक्ड सूची हाइब्रिड
उत्तर
std::deque
आपके वर्णन के लिए निकटतम मानक कंटेनर है। यह बिल्कुल इस तरह नहीं है, हालांकि (उदाहरण के लिए, यह सरणी की एक सूची के बजाय सरणी की सरणी होना चाहिए क्योंकि बाद वाले निरंतर समय तक पहुंच की अनुमति नहीं होगी)।
आपकी व्यावहारिक आवश्यकताओं के आधार पर, यह काफी करीब हो सकता है।
तो मैं मूल रूप से एक डेक का उपयोग कर सकता हूं और केवल कुछ खंडों को जोड़ सकता हूं जिन्हें एक निश्चित स्तर के टुकड़े तक पहुंचने के बाद इसे डिफ्रैगमेंट करने की आवश्यकता होती है। यह विचार स्वाभाविक रूप से मेमोरी होप्स और कैश मिस को खत्म करने के लिए है ... – dtech
जैसा कि पहले से ही कहा गया है, std::deque
आपकी आवश्यकताओं के करीब आता है। मैं सिर्फ std::vector
और std::deque
के बीच इस तुलना को जोड़ना चाहता हूं जो मुझे बहुत उपयोगी पाया। An In-Depth Study of the STL Deque Container
क्या आपने 'std :: deque' पर एक नज़र डाली है? क्या यह आपकी आवश्यकताओं के अनुरूप है? – Asha
मुझे लगता है कि 'std :: deque' इस तरह से काम करता है, लेकिन मुझे यकीन नहीं है। – Constantinius
@ कॉन्स्टेंटिनीस मैंने हमेशा सोचा था कि 'std :: deque' सिर्फ एक प्रकार का रिंगबफर था और इस प्रकार इसकी स्मृति आवंटन व्यवहार में 'std :: vector' के समान था। –