কম্পিউটার টিউটোরিয়াল

C++-এ new ব্যবহার করে ডাইনামিক ২D অ্যারে ঘোষণা

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

C++-এ new ব্যবহার করে ডাইনামিক ২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;

এটি ক্যাশে পারফরম্যান্স বাড়ায় এবং মেমরি ফ্র্যাগমেন্টেশন কমায়।

  1. C++-এ প্যারালেল অ্যারে: সংজ্ঞা, ব্যবহার ও উদাহরণ

  2. OpenCV-এ C++ ব্যবহার করে রঙ ট্র্যাক করা

  3. C++-এ new ব্যবহার করে ডাইনামিক ২D অ্যারে ঘোষণা

  4. C++-এ new অপারেটর দিয়ে মেমরি ইনিশিয়ালাইজ করা