এই লেখায় আমরা C++ STL-এ multimap::crbegin() এবং multimap::crend() ফাংশনদের কাজ করার পদ্ধতি, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
C++ STL-এ Multimap কী?
Multimap হল একটি অ্যাসোসিয়েটিভ কন্টেইনার যা ম্যাপ কন্টেইনারের মতো। এটি কী-ভ্যালু জোড়া হিসেবে উপাদান সংরক্ষণ করে নির্দিষ্ট ক্রমে। একটি মাল্টিম্যাপ কন্টেইনারে একই কী-এর সাথে একাধিক উপাদান থাকতে পারে। ডেটা অভ্যন্তরীণভাবে সংশ্লিষ্ট কী-هاর সাহায্যে সর্টেড থাকে।
multimap::crbegin() কী?
multimap::crbegin() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন, যা <map> হেডার ফাইলে সংজ্ঞায়িত। crbegin() বোঝায় কনস্ট্যান্ট রিভার্স বিগিন, অর্থাৎ cbegin (কনস্ট্যান্ট বিগিন) এর বিপরীত। অন্য কথায়, crbegin() ফাংশনটি একটি ইটেরেটর রিটার্ন করে যা মাল্টিম্যাপ কন্টেইনারের শেষ উপাদানকে নির্দেশ করে। এই ইটেরেটরটি মাল্টিম্যাপ মডিফাই করতে ব্যবহার করা যাবে না। এটি শুধু সেট কন্টেইনার ট্রাভার্স করতে ব্যবহার করা যায়।
সিনট্যাক্স
mutliMap_name.crbegin();
প্যারামিটার
এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।
রিটার্ন ভ্যালু
এই ফাংশন কন্টেইনারের শেষ উপাদানকে নির্দেশকারী একটি ইটেরেটর রিটার্ন করে।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int main() {
// কন্টেইনার তৈরি
multimap<int, int> mul;
// emplace_hint ব্যবহার করে ইনসার্ট
mul.emplace_hint(mul.begin(), 1, 10);
mul.emplace_hint(mul.begin(), 2, 20);
mul.emplace_hint(mul.begin(), 2, 30);
mul.emplace_hint(mul.begin(), 1, 40);
mul.emplace_hint(mul.begin(), 1, 50);
mul.emplace_hint(mul.begin(), 5, 60);
auto it = mul.crbegin();
cout << "Last element using crbegin() is: {" << it->first << ", " << it->second << "}\n";
cout << "\nElements in multimap is: \n";
cout << "KEY\tELEMENT\n";
for (auto i = mul.crbegin(); i != mul.crend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
আউটপুট
Last element using crbegin() is: {5, 60}
Elements in multimap is:
KEY ELEMENT
5 60
2 20
2 30
1 10
1 40
1 50
multimap::crend() কী?
multimap::crend() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন, যা <map> হেডার ফাইলে সংজ্ঞায়িত। crend() বোঝায় কনস্ট্যান্ট রিভার্স এন্ড ইটেরেটর, অর্থাৎ cend (কনস্ট্যান্ট এন্ড ইটেরেটর) এর বিপরীত। অন্য কথায়, crend() ফাংশনটি একটি ইটেরেটর রিটার্ন করে যা কন্টেইনারের প্রথম পজিশনের ঠিক আগের পজিশনকে নির্দেশ করে। এই ইটেরেটরটি মাল্টিম্যাপ মডিফাই করতে ব্যবহার করা যাবে না। এটি শুধু মাল্টিম্যাপ কন্টেইনার ট্রাভার্স করতে ব্যবহার করা যায়।
সিনট্যাক্স
newmultimap.crend();
প্যারামিটার
এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।
রিটার্ন ভ্যালু
এটি সংশ্লিষ্ট কন্টেইনারের প্রথম উপাদানের আগের পজিশনকে নির্দেশকারী একটি ইটেরেটর রিটার্ন করে।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int main() {
// কন্টেইনার তৈরি
multimap<int, int> mul;
// emplace_hint ব্যবহার করে ইনসার্ট
mul.emplace_hint(mul.begin(), 1, 10);
mul.emplace_hint(mul.begin(), 2, 20);
mul.emplace_hint(mul.begin(), 2, 30);
mul.emplace_hint(mul.begin(), 1, 40);
mul.emplace_hint(mul.begin(), 1, 50);
mul.emplace_hint(mul.begin(), 5, 60);
cout << "\nElements in multimap is: \n";
cout << "KEY\tELEMENT\n";
for (auto i = mul.crbegin(); i != mul.crend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
আউটপুট
Elements in multimap is: KEY ELEMENT 5 60 2 20 2 30 1 10 1 40 1 50