কম্পিউটার

C এবং C++ এ পরিবর্তনশীল দৈর্ঘ্যের অ্যারে


এখানে আমরা 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

  1. C-তে পরিবর্তনশীল দৈর্ঘ্যের আর্গুমেন্ট

  2. C/C++ এ বহুমাত্রিক অ্যারে

  3. C++ এ বৃত্ত এবং আয়তক্ষেত্র ওভারল্যাপিং

  4. C++ এ ডোমিনো এবং ট্রোমিনো টাইলিং