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

কেন Variable-Length Arrays (VLA) C++ স্ট্যান্ডার্ডে নেই?

VLA (যেমন int arr[n]; যেখানে n রানটাইম ভেরিয়েবল) C++-এ স্ট্যান্ডার্ড নয় কারণ:

  • স্ট্যাক ওভারফ্লো ঝুঁকি: বড় অ্যারে স্ট্যাক-এ বানালে প্রোগ্রাম ক্র্যাশ করতে পারে (স্ট্যাক সাইজ সীমিত)।
  • টাইপ সিস্টেম জটিলতা: VLA সাপোর্টের জন্য টাইপ সিস্টেমে বড় পরিবর্তন দরকার (রানটাইম সাইজ টাইপ সিস্টেমে)।
  • সুরক্ষা: কম্পাইল-টাইমে সাইজ জানা ন থাকলে বাউন্ড চেকিং এবং অপ্টিমাইজেশন কঠিন।

বিকল্প (সুপারিশকৃত): std::vector ব্যবহার করুন। এটি হিপ-এ মেমরি অ্যালোকেট করে, ডাইনামিক রিসাইজিং সাপোর্ট করে, এবং বাউন্ড চেকিং (at()) দিয়ে থাকে।

vector উদাহরণ

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    for(auto it = vec.begin(); it != vec.end(); ++it)
        cout << *it << endl;
    return 0;
}

আউটপুট

1
2
3

নোট: GCC/Clang এক্সটেনশন হিসেবে VLA সাপোর্ট করে (-pedantic দিলে ওয়ার্নিং দেয়)। কিন্তু পোর্টেবল কোডে ব্যবহার করা উচিত নয়।

  1. C++-এ মেজ সমস্যা: বল দিয়ে পথ খুঁজে বের করা

  2. C++-এ খালি ক্লাসের সাইজ শূন্য নয় কেন?

  3. সি++-এ সর্টেড অ্যারে (Sorted Arrays) — ইনসারশন ও ডিলিশন

  4. C++-এ দেওয়া নোডের সাব-ট্রির সব নোডের XOR