स्मृति में संग्रहीत 2 डी सरणी कैसे है?मेमोरी में एक गतिशील 2 डी सरणी कैसे संग्रहीत की जाती है?
मैंने निम्नलिखित दृष्टिकोण के बारे में सोचा, जहां पंक्तियों को स्मृति के जटिल ब्लॉक के रूप में संग्रहीत किया जाता है।
| _ __ _ __ _ __ || _ __ _ __ _ __ | __ _ __ _ __ |_ __ _ __ _ _ | ... | _ __ _ __ _ __ |
तत्वों को (i, j) -> n * i + j जैसे accesed हैं, जहां n मैट्रिक्स का आयाम है (मान लीजिए कि यह nxn है)।
लेकिन अगर मैं इसमें एक नया कॉलम जोड़ना चाहता हूं तो क्या होगा? मुझे प्रत्येक पंक्ति में प्रत्येक (एन + 1) वें तत्व को अपडेट करना होगा और उन्हें सही पर भी स्थानांतरित करना होगा, लेकिन यह बहुत कम्प्यूटेशनल रूप से महंगा है।
एक और विकल्प मैट्रिक्स को नए स्थान पर कॉपी करना होगा और फ्लाई पर नए कॉलम के तत्वों के साथ पंक्तियों को अपडेट करना होगा। लेकिन सरणी बड़ी है तो यह भी बहुत कुशल नहीं है।
और आखिरकार तीसरा विकल्प मैंने सोचा कि प्रत्येक पंक्ति के लिए एक निश्चित मात्रा में स्मृति आवंटित करना है और जब मैं एक नया कॉलम जोड़ता हूं तो मुझे पंक्तियों को दाएं स्थानांतरित करने की आवश्यकता नहीं होती है।
मुझे स्मृति में अंतराल नहीं हो सकता है, इसलिए सभी ब्लॉक अव्यवस्थित होना चाहिए।
मैं एक सी कार्यान्वयन संकेत और वास्तविक रैम स्मृति का उपयोग के लिए नहीं पूछ रहा हूँ, मैं स्मृति में एक गतिशील 2d सरणी भंडारण का एक सैद्धांतिक दृष्टिकोण के बारे में बस उत्सुक हूँ तो के रूप में यह नई पंक्तियां जोड़ी के लिए आसान है या इसे कॉलम
क्या अन्य और अधिक कुशल दृष्टिकोण हैं?
आप किस आकार के साथ काम कर रहे हैं? क्या हम 1.000.000 तत्वों के 10 तत्वों की बात कर रहे हैं? –
मिलियन की तरह अधिक। – flowerpower