C/C++ Struct

C++ Struct একটি অত্যন্ত জরুরি ফিচার C/C++ programming language এর। এই আর্টিকেল এ আমরা জানবো C structure বা C++ struct এর ব্যবহার।

প্রথমেই জানি  কখন আমাদের এই ফিচার ব্যবহার করা লাগতে পারে। ধরলাম আমরা একটি ফোন বুক প্রোগ্রাম বানাবো, যেখানে একাধিক ব্যাক্তির নাম, ঠিকানা, মোবাইল নাম্বার save করে রাখব। এখন সাধারনত আমরা কি করতাম ?

[sourcecode language=”cpp”]

char name[1000][1001]; // each name can be upto 1000 character
int mobile [1000]; // we can store 1000 person’s info
int home [1000];
[/sourcecode]

এখন একটা ব্যাপার খেয়াল হতে পারে, আমি একি লোক এর জন্য, ৩ টি array ব্যবহার করছি, এখন ধরলাম, আমি এই প্রোগ্রাম এ আসল ডাটা গুলোর ব্যাকআপ হিশেবে আরো ৩ টা array  বানাবো। তাহলে কোড টা দাঁড়াচ্ছে এরকম-

[sourcecode language=”cpp”]

char name[1000][1001]; // each name can be upto 1000 character
int mobile [1000]; // we can store 1000 person’s info
int home [1000];

char backup_name[1000][1001]; // backup array
int backup_mobile [1000];
int backup_address [1000];
[/sourcecode]

একি ব্যক্তি এর জন্য আমরা ৬ টা array declare করলাম, এখন কখনো যদি কোন array এর নাম পরিবর্তন করা লাগে, বা এরকম আরও ব্যাকআপ বানানো লাগে, তাহলে আমরা কিছু ঝামেলা তে পরব। তখন আমাদের মনে হতে পারে, যদি এই ৩ টা array কে একটা গ্রুপ এ রাখা যেতো, coding এ ঝামেলা কমতো। এই সমস্যা সমাধানে আমরা struct ব্যবহার করতে পারি।

এখন দেখা যাক, অই ৩ টা array কে কিভাবে একটি struct এ প্রকাশ করা যায়।

[sourcecode language=”cpp”]

struct telephone{
char name[1001];
int mobile;
int home;
};

[/sourcecode]

খেয়াল করো, struct লেখার পর একটা নাম দিতে হয়, [যেমন এখানে telephone] এই নাম দিয়েই আমরা পরে নতুন নতুন struct declare করতে পারবো। আর খেয়াল করতে হবে } এর শেষে ; [সেমিকোলন] দিতেই হবে, নাহলে compilation error হবে। এবার দেখা যাক, struct declare করা যায় কিভাবে-

[sourcecode language=”cpp”]

struct telephone entry [1000];

[/sourcecode]

এবার আমরা struct এর ভিতরের element গুলা কে access করতে চাই, কিভাবে করব, কোড দেখাই-

[sourcecode language=”cpp”]

for(i=0;i<100;i++){
scanf(" %s",entry[i].name);
scanf("%d",&entry[i].mobile);
scanf("%d",&entry[i].home);
}

for(i=0;i<100;i++){
printf("%s",entry[i].name);
printf("%d",&entry[i].mobile);
printf("%d",&entry[i].home);
}

[/sourcecode]

কাজ সহজ হয়ে গেলো অনেক , তাই না ?

এই struct feature ব্যবহার করে অনেক ডাটা স্ট্রাকচার , গ্রাফ প্রব্লেম এর অ্যালগরিদম সহজেই ইমপ্লেমেনট করা যায়।