C++:
এসোসিয়েটিভ অ্যারের ব্যবহার
কিভাবে:
C++ এ, অ্যাসোসিয়েটিভ অ্যারে <map>
এবং <unordered_map>
হেডারগুলির মাধ্যমে জীবন পায়। উভয়ের ব্যবহার দেখতে আসুন উদাহরণের মাধ্যমে দেখি।
std::map
ব্যবহার করে
std::map
কী এর উপর ভিত্তি করে উপাদানগুলিকে সাজানো রাখে। শুরু করার জন্য এখানে কিভাবে:
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, int> ageMap;
// মানগুলি ইনসার্ট করা
ageMap["Alice"] = 30;
ageMap["Bob"] = 25;
// মানগুলি এক্সেস করা
std::cout << "ববের বয়স: " << ageMap["Bob"] << std::endl;
// একটি ম্যাপের উপর ইটারেট করা
for(const auto &pair : ageMap) {
std::cout << pair.first << " এর বয়স " << pair.second << " বছর।" << std::endl;
}
return 0;
}
std::unordered_map
ব্যবহার করে
যখন অর্ডারের প্রয়োজন না থাকে, কিন্তু পারফরম্যান্সের প্রয়োজন থাকে, std::unordered_map
আপনার বন্ধু, যা গড় জটিলতায় দ্রুত ইনসার্ট, লুকআপ এবং ডিলিট অর্ফার করে।
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
std::unordered_map<std::string, double> productPrice;
// মানগুলি ইনসার্ট করা
productPrice["dudh"] = 2.99;
productPrice["roti"] = 1.99;
// মানগুলি এক্সেস করা
std::cout << "Dudher daam: $" << productPrice["dudh"] << std::endl;
// একটি unordered_map এর উপর ইটারেট করা
for(const auto &pair : productPrice) {
std::cout << pair.first << " er daam $" << pair.second << std::endl;
}
return 0;
}
গভীরে ডুব:
C++ এর অ্যাসোসিয়েটিভ অ্যারে, বিশেষ করে std::map
এবং std::unordered_map
, কেবল উপাদান সংরক্ষণ করা নয়, এরা অনুসন্ধান, ইনসার্ট, এবং মুছে ফেলার মতো অপারেশনগুলি কার্যকর সময় জটিলতায় সম্ভব করে তোলে (std::map
এর জন্য লগারিদমিক এবং std::unordered_map
এর জন্য গড় কেসে স্থায়ী সময়)। এই দক্ষতা আসে অধীনস্থ ডেটা কাঠামো থেকে: std::map
এর জন্য একটি সমতল বৃক্ষ এবং std::unordered_map
এর জন্য একটি হ্যাশ টেবিল।
ঐতিহাসিকভাবে, এইগুলি মানক লাইব্রেরির অংশ না হওয়ার আগে, প্রোগ্রামারদের নিজেদের সংস্করণ তৈরি করতে হত বা তৃতীয়-পক্ষের লাইব্রেরিগুলি ব্যবহার করতে হত, যা অসামঞ্জস্য এবং সম্ভাব্য অকার্যকরিতার জন্য পথ তৈরি করত। C++ এর মানক লাইব্রেরিতে ম্যাপগুলির অন্তর্ভুক্তি শুধুমাত্র তাদের ব্যবহারকে মানদণ্ডবদ্ধ করেনি, বিভিন্ন কম্পাইলার এবং প্ল্যাটফর্মে তাদের পারফরম্যান্সকে অনুকূলিত করেছে।
যদিও উভয়ই শক্তিশালী, একটি std::map
এবং std::unordered_map
এর মধ্যে নির্বাচন আপনার ব্যবহারের বিশেষ উপর নির্ভর করে। আপনার যদি অর্ডারযুক্ত ডেটা প্রয়োজন হয় এবং সামান্য পারফরম্যান্স ট্রেড-অফের সাথে সমস্যা না থাকে, তবে std::map
এর সাথে যান। যদি আপনার দ্রুততা প্রয়োজন হয় এবং অর্ডার সম্পর্কে আপনার কোনও যত্ন না থাকে, তবে std::unordered_map
আপনার জন্য ভাল বিকল্প হতে পারে।
তবে, এটা মনে রাখা জরুরি যে জটিল ডেটা কাঠামোর সাথে কাজ করার সময়, সর্বদা ট্রেড-অফ থাকে। কিছু নির্দিষ্ট ক্ষেত্রে, অন্যান্য ডেটা কাঠামো বা এমনকি তৃতীয়-পক্ষের লাইব্রেরিগুলি আপনার বিশেষ চাহিদার জন্য আরও ভাল পারফরম্যান্স বা ফাংশনালিটি অর্ফার করতে পারে। আপনার প্রকল্পের প্রয়োজনীয়তার ভিত্তিতে সর্বদা আপনার বিকল্পগুলি বিবেচনা করুন।