মডিউল পাঠ (1/2)
অ্যারে এবং ভেক্টর
C++-এ, ডেটা সংগ্রহের ব্যবস্থাপনা মূলত দুটি টুলের মাধ্যমে করা হয়: পুরাতন-স্টাইল অ্যারে (সি-স্টাইল অ্যারে) এবং ভেক্টর (std::vector)। স্ট্যাটিক এবং ডাইনামিক মেমরির মধ্যে পার্থক্য বোঝা দক্ষ কোড লেখার জন্য মৌলিক।
1. স্ট্যাটিক অ্যারে (সি-স্টাইল অ্যারে)
একটি অ্যারে হল একই ধরণের উপাদানগুলির একটি সংগ্রহ যা সংলগ্ন মেমরি অবস্থানগুলিতে সংরক্ষণ করা হয়। একটি স্ট্যাটিক অ্যারের আকার অবশ্যই কম্পাইলের সময় জানা উচিত এবং পরে পরিবর্তন করা যাবে না:
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integersমূল বৈশিষ্ট্য:
- স্থির আকার: আপনি রানটাইমে উপাদান যোগ বা সরাতে পারবেন না।
- স্ট্যাক বরাদ্দ: খুব দ্রুত বরাদ্দ এবং ডিললোকেট।
- অ্যাক্সেস: ইনডেক্স অপারেটর
[]এর মাধ্যমে সম্পন্ন হয়েছে (যেমন, প্রথম উপাদানটির জন্যgrades[0])।
2. গতিশীল ভেক্টর (std::vector)
C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) std::vector ক্লাস প্রদান করে, যা একটি গতিশীল অ্যারের প্রতিনিধিত্ব করে। এটি ব্যবহার করতে, আপনাকে অবশ্যই <vector> শিরোনামটি অন্তর্ভুক্ত করতে হবে:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersসাধারণ অপারেশন:
- শেষে যোগ করুন:
.push_back(value)পদ্ধতি ভেক্টরের শেষে একটি উপাদান সন্নিবেশিত করে, প্রয়োজন হলে স্বয়ংক্রিয়ভাবে মেমরি পুনরায় বন্টন করে। - আকার:
.size()পদ্ধতিটি বর্তমানে ভেক্টরে থাকা উপাদানের সংখ্যা প্রদান করে। - নিরাপদ অ্যাক্সেস:
[]অপারেটর ছাড়াও, আপনি.at(index)পদ্ধতি ব্যবহার করতে পারেন (যেমন,numbers.at(0)), যা সূচকটি সীমার বাইরে থাকলে একটি ব্যতিক্রম নিক্ষেপ করে৷
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3নিজে চেষ্টা করে দেখুন
সংখ্যা নামক পূর্ণসংখ্যার একটি std:: ভেক্টর ঘোষণা করুন। .push_back() পদ্ধতি ব্যবহার করে এর ভিতরে 10, 20, এবং 30 মান যোগ করুন, তারপর numbers.size() ব্যবহার করে এর আকার প্রিন্ট করুন।
ইঙ্গিত দেখান
`std::vector<int> সংখ্যা;`সহ ভেক্টর ঘোষণা করুন,`.push_back(value)`দিয়ে তিনটি সংখ্যা সন্নিবেশ করুন, এবং`std::cout << numbers.size();` দিয়ে প্রিন্ট করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
প্রধানত, 5টি উপাদানের একটি গ্রেড অ্যারে সংজ্ঞায়িত করা হয়েছে। অ্যারের সমস্ত উপাদানের যোগফল গণনা করার জন্য একটি লুপ লিখুন, এটি পরিবর্তনশীল যোগফলের মধ্যে সংরক্ষণ করুন এবং std::cout ব্যবহার করে প্রিন্ট করুন।
ইঙ্গিত দেখান
একটি `এর জন্য (int i = 0; i < 5; ++i)` লুপ ব্যবহার করুন এবং লুপের ভিতরে প্রতিটি উপাদানের যোগফল += গ্রেড[i];` সহ যোগ করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
C++ এ std::vector-এর শেষে একটি উপাদান যুক্ত করার সঠিক পদ্ধতি কী?
std::vector<int> numbers; // come aggiungere il valore 50?