একটি ডাইনামিক ২D অ্যারে মূলত পয়েন্টারগুলোর অ্যারে যারা আবার অ্যারেগুলো পয়েন্ট করে। নিচে ৩x৪ ডাইমেনশনের ২D অ্যারের ডায়াগ্রাম দেখানো হয়েছে।

এলগরিদম
শুরু অ্যারের ডাইমেনশন ঘোষণা করুন new ব্যবহার করে ২D অ্যারে a[][] ডাইনামিক্যালি অ্যালোকেট করুন অ্যারে উপাদান দিয়ে ফিল করুন অ্যারে প্রিন্ট করুন মেমরি ডিলিট করে মুক্ত করুন শেষ
উদাহরণ কোড
#include <iostream>
using namespace std;
int main() {
int B = 4; // রো
int A = 5; // কলাম
// পয়েন্টার-টু-পয়েন্টার অ্যালোকেশন
int** a = new int*[B]; // রো পয়েন্টার অ্যারে
for (int i = 0; i < B; ++i)
a[i] = new int[A]; // প্রতিটি রোর জন্য কলাম অ্যালোকেশন
// ভ্যালু ফিল (রো ইন্ডেক্স দিয়ে)
for (int i = 0; i < B; ++i)
for (int j = 0; j < A; ++j)
a[i][j] = i;
// প্রিন্ট
for (int i = 0; i < B; ++i)
for (int j = 0; j < A; ++j)
cout << a[i][j] << "\n";
// মেমরি মুক্ত: বিপরীত ক্রমে
for (int i = 0; i < B; ++i)
delete[] a[i]; // প্রতিটি রো
delete[] a; // রো পয়েন্টার অ্যারে
return 0;
}
আউটপুট
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
বेहतर পদ্ধতি (C++11+): একক ব্লকে কন্টিগুয়াস ২D অ্যারে:
// একসাথে অ্যালোকেশন (ক্যাশে-ফ্রেন্ডলি)
int* flat = new int[B * A];
auto a = new int*[B];
for (int i = 0; i < B; ++i)
a[i] = &flat[i * A];
// ব্যবহার: a[i][j]
// মুক্তি:
delete[] flat;
delete[] a;
এটি ক্যাশে পারফরম্যান্স বাড়ায় এবং মেমরি ফ্র্যাগমেন্টেশন কমায়।