ডাইনামিক ২D অ্যারে মূলত পয়েন্টারের অ্যারে (array of pointers), যেটির প্রতিটি পয়েন্টার একটি ১D অ্যারে পয়েন্ট করে।
এলোকেশন প্যাটার্ন
int rows = 3, cols = 4;
int** arr = new int*[rows]; // ১. পয়েন্টার অ্যারে
for(int i = 0; i < rows; ++i)
arr[i] = new int[cols]; // ২. প্রতিটি রো আলাদা আলাদা অ্যালোকেট
ডি-এলোকেশন (রিভার্স অর্ডারে)
for(int i = 0; i < rows; ++i)
delete[] arr[i]; // প্রথমে প্রতিটি রো
delete[] arr; // তারপর পয়েন্টার অ্যারে
সম্পূর্ণ উদাহরণ
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 4;
int** arr = new int*[rows];
for(int i = 0; i < rows; ++i)
arr[i] = new int[cols];
// ব্যবহার
arr[1][2] = 42;
cout << arr[1][2] << endl; // 42
// মেমরি মুক্ত
for(int i = 0; i < rows; ++i) delete[] arr[i];
delete[] arr;
return 0;
}
উন্নত বিকল্প: std::vector<std::vector<int>> বা std::vector<int> (ফ্ল্যাটেনড, index = r*cols + c) বা std::unique_ptr<int[]>। এগুলো অটোমেটিক মেমরি ম্যানেজ করে।