এখানে আমরা C++ এ পরিবর্তনশীল দৈর্ঘ্যের অ্যারে সম্পর্কে আলোচনা করব। এটি ব্যবহার করে আমরা পরিবর্তনশীল আকারের একটি অটো অ্যারে বরাদ্দ করতে পারি। সি-তে, এটি C99 স্ট্যান্ডার্ড থেকে পরিবর্তনশীল আকারের অ্যারে সমর্থন করে। নিম্নলিখিত বিন্যাস এই ধারণা সমর্থন করে −
void make_arr(int n){ int array[n]; } int main(){ make_arr(10); }
কিন্তু, C++ স্ট্যান্ডার্ডে (C++11 পর্যন্ত) পরিবর্তনশীল দৈর্ঘ্যের অ্যারের কোনো ধারণা ছিল না। C++11 স্ট্যান্ডার্ড অনুযায়ী, অ্যারের আকারকে একটি ধ্রুবক-প্রকাশ হিসাবে উল্লেখ করা হয়েছে। সুতরাং, কোডের উপরের ব্লকটি একটি বৈধ C++11 বা নীচে নাও হতে পারে। C++ 14-এ অ্যারের আকারকে একটি সাধারণ অভিব্যক্তি হিসাবে উল্লেখ করে (ধ্রুব-অভিব্যক্তি নয়)।
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include<iostream> #include<cstring> #include<cstdlib> using namespace std; class employee { public: int id; int name_length; int struct_size; char emp_name[0]; }; employee *make_emp(struct employee *e, int id, char arr[]) { e = new employee(); e->id = id; e->name_length = strlen(arr); strcpy(e->emp_name, arr); e->struct_size=( sizeof(*e) + sizeof(char)*strlen(e->emp_name) ); return e; } void disp_emp(struct employee *e) { cout << "Emp Id:" << e->id << endl; cout << "Emp Name:" << e->emp_name << endl; cout << "Name Length:" << e->name_length << endl; cout << "Allocated:" << e->struct_size << endl; cout <<"---------------------------------------" << endl; } int main() { employee *e1, *e2; e1=make_emp(e1, 101, "Jayanta Das"); e2=make_emp(e2, 201, "Tushar Dey"); disp_emp(e1); disp_emp(e2); cout << "Size of student: " << sizeof(employee) << endl; cout << "Size of student pointer: " << sizeof(e1); }
আউটপুট
Emp Id:101 Emp Name:Jayanta Das Name Length:11 Allocated:23 --------------------------------------- Emp Id:201 Emp Name:Tushar Dey Name Length:10 Allocated:22 --------------------------------------- Size of student: 12 Size of student pointer: 8