এই লেখায় আমরা C++ STL-এ multimap::cbegin() এবং multimap::cend() ফাংশনদের কাজ করার পদ্ধতি, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
C++ STL-এ Multimap কী?
Multimap হল একটি অ্যাসোসিয়েটিভ কন্টেইনার যা ম্যাপ কন্টেইনারের মতো। এটি কী-ভ্যালু জোড়া হিসেবে উপাদান সংরক্ষণ করে নির্দিষ্ট ক্রমে। একটি মাল্টিম্যাপ কন্টেইনারে একই কী-এর সাথে একাধিক উপাদান থাকতে পারে। ডেটা অভ্যন্তরীণভাবে সংশ্লিষ্ট কী-هاর সাহায্যে সর্টেড থাকে।
multimap::cbegin() কী?
multimap::cbegin() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন, যা <map> হেডার ফাইলে সংজ্ঞায়িত। এটি কনস্ট্যান্ট begin ফাংশন। এই ফাংশনটি একটি কনস্ট্যান্ট ইটেরেটর রিটার্ন করে যা মাল্টিম্যাপ কন্টেইনারের প্রথম উপাদানকে নির্দেশ করে। রিটার্ন করা ইটেরেটর কনস্ট্যান্ট, তাই এগুলো কন্টেন্ট মডিফাই করতে ব্যবহার করা যাবে না। আমরা এগুলো ব্যবহার করে ম্যাপ কন্টেইনারের উপাদানগুলোর মধ্যে ট্রাভার্স করতে পারি ইটেরেটর বাড়াতে বা কমানো দ্বারা।
সিনট্যাক্স
multi.cbegin();
প্যারামিটার
এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।
রিটার্ন ভ্যালু
এটি সংশ্লিষ্ট ম্যাপ কন্টেইনারের প্রথম উপাদানকে নির্দেশকারী একটি ইটেরেটর রিটার্ন করে।
উদাহরণ
#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.cbegin();
cout << "First element in the multimap is: ";
cout << "{" << it->first << ", " << it->second << "}\n";
cout << "\nElements in multimap is: \n";
cout << "KEY\tELEMENT\n";
for (auto i = mul.cbegin(); i != mul.cend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
আউটপুট
First element in the multimap is: {1, 50}
Elements in multimap is:
KEY ELEMENT
1 50
1 40
1 10
2 30
2 20
5 60
multimap::cend() কী?
multimap::cend() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন, যা <map> হেডার ফাইলে সংজ্ঞায়িত। এটি কনস্ট্যান্ট end() ফাংশন। এই ফাংশনটি সংশ্লিষ্ট মাল্টিম্যাপ কন্টেইনারের শেষ উপাদানের পরের এলিমেন্টের কনস্ট্যান্ট ইটেরেটর রিটার্ন করে।
রিটার্ন করা ইটেরেটর কনস্ট্যান্ট, তাই এগুলো কন্টেন্ট মডিফাই করতে ব্যবহার করা যাবে না। আমরা এগুলো ব্যবহার করে ম্যাপ কন্টেইনারের উপাদানগুলোর মধ্যে ট্রাভার্স করতে পারি।
multimap::cbegin() এবং multimap::cend() পুরো কন্টেইনার ট্রাভার্স করার জন্য ব্যবহৃত হয় রেঞ্জের শুরু এবং শেষ দিয়ে।
সিনট্যাক্স
multi.cend();
প্যারামিটার
এই ফাংশন কোনো প্যারামিটার গ্রহণ করে না।
রিটার্ন ভ্যালু
এটি সংশ্লিষ্ট ম্যাপ কন্টেইনারের শেষ উপাদানের পরের পজিশনকে নির্দেশকারী একটি ইটেরেটর রিটার্ন করে।
উদাহরণ
#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.cbegin(); i != mul.cend(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
আউটপুট
Elements in multimap is: KEY ELEMENT 1 50 1 40 1 10 2 30 2 20 5 60