मैंने 2 डी-एरे के बारे में पढ़ा और स्टैक ओवरफ्लो पर मूल्यों को कैसे आवंटित और प्राप्त किया जाए। तो प्रस्ताव इस तरह स्मृति का केवल एक ब्लॉक आवंटित करना है:

int *ary = new int[sizeX*sizeY];

और इसे इस तरह एक्सेस करने के लिए:

ary[i*sizeX+j]

लेकिन मान लेते हैं कि sizeX 2 है और sizeY 3 है, इसलिए हम स्थिति के लिए i = 0 और j = 2 और i = 1 और j = 0 समान मान प्राप्त करेंगे, उनमें से प्रत्येक के लिए मान 2 क्योंकि 0*2+2 = 2 और 1*2+0=2, इसलिए हम देखते हैं कि सरणी में समान चर कहते हैं, लेकिन हम एक अलग स्थिति चाहते हैं। क्या मुझे कुछ याद आ रहा है या क्या कोई सुझाव है कि इसे कैसे ठीक किया जाए? आपका अग्रिम में ही बहुत धन्यवाद!

0
whoami1996 4 अप्रैल 2020, 21:16

1 उत्तर

सबसे बढ़िया उत्तर

आपको i को दूसरे आयाम के आकार से गुणा करना चाहिए, इसलिए यदि sizeX 2 है तो j = 2 मौजूद नहीं है। मान लें कि X आपका पहला आयाम है और Y आपका दूसरा आयाम है, तो आप i * sizeY + j करना चाहेंगे।

1
BessieTheCow 4 अप्रैल 2020, 20:19