আজকে আমরা ম্যাপ সম্পর্কে জানবো ।
আমরা সাধারণত কোনো অ্যারে ইউজ করি যদি একই ধরণের অনেক গুলো ডেটা স্টোর করে রাখতে চাই ।
তো ম্যাপ আমাদের কে সেই সুবিধা তো দিবেই পাশা পাশি বাড়তি কিছু জিনিশ ও পাবো আমরা ।
এখানে সব কিছুই পেয়ার আকারে স্টোর হবে আর সব কয়টা ভেল্যু ই থাকবে একেকটা ইউনিক "কী" এর আন্ডারে ।
আর "কী" গুলো অটোমেটিক ভাবে সর্ট হয়ে থাকবে । যেমন ?
আচ্ছা কথা না বাড়িয়ে কাজে চলে যাই আমরা !
প্রথমেই দেখবো ম্যাপ কীভাবে ইমপ্লিমেন্ট করবো আমাদের প্রোগ্রামে ।
এটার জন্য আমাদের একটা লাইব্রেরী ইনক্লুড করে নিতে হবে শুরু তেই
আমরা সাধারণত কোনো অ্যারে ইউজ করি যদি একই ধরণের অনেক গুলো ডেটা স্টোর করে রাখতে চাই ।
তো ম্যাপ আমাদের কে সেই সুবিধা তো দিবেই পাশা পাশি বাড়তি কিছু জিনিশ ও পাবো আমরা ।
এখানে সব কিছুই পেয়ার আকারে স্টোর হবে আর সব কয়টা ভেল্যু ই থাকবে একেকটা ইউনিক "কী" এর আন্ডারে ।
আর "কী" গুলো অটোমেটিক ভাবে সর্ট হয়ে থাকবে । যেমন ?
আচ্ছা কথা না বাড়িয়ে কাজে চলে যাই আমরা !
প্রথমেই দেখবো ম্যাপ কীভাবে ইমপ্লিমেন্ট করবো আমাদের প্রোগ্রামে ।
এটার জন্য আমাদের একটা লাইব্রেরী ইনক্লুড করে নিতে হবে শুরু তেই
#include<iostream>
#include<map>
using namespace std;
int main()
{
return 0;
}
এখন আমরা দেখবো কীভাবে ম্যাপ এর ভেতরে আমরা কিছু রাখতে পারি ।
শুরু তেই আমরা "কী" এর কথা বলেছিলাম ।
এখন আমরা দেখবো "কী" টা কেমন টাইপ ডেটা হবে সেটাও আমরা ঠিক করে দিতে পারব । যেমন , স্ট্রিং অথবা ইন্টিজার !
প্রথমে আমরা ঠিক করে দিবো "কী" এর ডেটা টাইপ ,
তারপরে আমরা ঠিক করে দিবো ভেল্যু এর ডেটা টাইপ ।
আমরা এভাবে করবো ...
শুরু তেই আমরা "কী" এর কথা বলেছিলাম ।
এখন আমরা দেখবো "কী" টা কেমন টাইপ ডেটা হবে সেটাও আমরা ঠিক করে দিতে পারব । যেমন , স্ট্রিং অথবা ইন্টিজার !
প্রথমে আমরা ঠিক করে দিবো "কী" এর ডেটা টাইপ ,
তারপরে আমরা ঠিক করে দিবো ভেল্যু এর ডেটা টাইপ ।
আমরা এভাবে করবো ...
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
return 0;
}
এখানে আমরা প্রথমেই mp নামের একটা ম্যাপ নিয়েছি আর সেটার মাঝে বলে দিয়েছি যে ,কী এবং ভেল্যু ২টার ডেটা টাইপ ই হবে ইন্টিজার টাইপ ।
এখন আমরা দেখবো কীভাবে ডেটা ঢুকানো হবে ম্যাপ এ ।
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
mp.insert({1,10});
mp.insert({2,20});
mp.insert({3,30});
return 0;
}
এখানে আমরা দেখতে পাচ্ছি,
ম্যাপ এর ভেতরে ভেল্যু নিলাম ।
১ এর আন্ডারে আছে ১০ । মানে হলো ১০ কে পেতে চাইলে আমাদের "কী" ১ এর কাছে যেতে হবে ।
১ আর ১০ মিলে পেয়ার তৈরি করেছে । তাই আমরা এভাবেও লিখতে পারি চাইলে ।
ম্যাপ এর ভেতরে ভেল্যু নিলাম ।
১ এর আন্ডারে আছে ১০ । মানে হলো ১০ কে পেতে চাইলে আমাদের "কী" ১ এর কাছে যেতে হবে ।
১ আর ১০ মিলে পেয়ার তৈরি করেছে । তাই আমরা এভাবেও লিখতে পারি চাইলে ।
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
mp.insert(make_pair(1,10));
mp.insert(make_pair(2,20));
mp.insert(make_pair(3,30));
mp.insert(make_pair(4,40));
mp.insert(make_pair(5,50));
return 0;
}
ঠিক একই ভাবে ২ এর পেয়ার হলো ২০ । এখন আমরা এই কী কে ইন্ডেক্স ও বলতে পারি ।
আমরা যদি অ্যারে ভালো ভাবে বুঝে থাকি তাহলে ইন্ডেক্স নিয়ে কনফিউশন থাকার কথা নয় !
তো আমি যদি ৪০ কে প্রিন্ট করতে চাই তাহলে কী করতে হবে ?
আমরা যদি অ্যারে ভালো ভাবে বুঝে থাকি তাহলে ইন্ডেক্স নিয়ে কনফিউশন থাকার কথা নয় !
তো আমি যদি ৪০ কে প্রিন্ট করতে চাই তাহলে কী করতে হবে ?
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
mp.insert(make_pair(1,10));
mp.insert(make_pair(2,20));
mp.insert(make_pair(3,30));
mp.insert(make_pair(4,40));
mp.insert(make_pair(5,50));
cout<<mp[4];
return 0;
}
৪০ এর "কী" হলো ৪ তাই ৪ দিয়েই আমরা পেয়ে গেলাম ৪০ !
তো এখন যদি আমরা সম্পূর্ণ ম্যাপ টাকে প্রিন্ট করতে চাই , তাহলে কি করতে হবে ?
নিশচয়ই তোমার মাথায় লুপ এর কথা এসেছে ?
হ্যা ।
আমরা ফর লুপ ইউজ করে করতে পারি !
তবে তার জন্য আমাদের দরকার পড়বে একটি ইটারেটর ।
যেটি কিনা ম্যাপ এর প্রথম এলিমেন্ট এর দিকে পয়েন্ট করে থাকবে আর একে একে ম্যাপ টা ট্রাভারস করে সব এলিমেন্ট প্রিন্ট করে দেখাবে !
তো এখন যদি আমরা সম্পূর্ণ ম্যাপ টাকে প্রিন্ট করতে চাই , তাহলে কি করতে হবে ?
নিশচয়ই তোমার মাথায় লুপ এর কথা এসেছে ?
হ্যা ।
আমরা ফর লুপ ইউজ করে করতে পারি !
তবে তার জন্য আমাদের দরকার পড়বে একটি ইটারেটর ।
যেটি কিনা ম্যাপ এর প্রথম এলিমেন্ট এর দিকে পয়েন্ট করে থাকবে আর একে একে ম্যাপ টা ট্রাভারস করে সব এলিমেন্ট প্রিন্ট করে দেখাবে !
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
mp.insert(make_pair(1,10));
mp.insert(make_pair(2,20));
mp.insert(make_pair(3,30));
mp.insert(make_pair(4,40));
mp.insert(make_pair(5,50));
map<int,int>::iterator it;
for(it=mp.begin(); it!=mp.end(); it++)
{
cout<<it->first<<" "<<it->second<<"\n";
}
return 0;
}
আমরা একটি ইটারেটর নিয়েছি আইটি নামে ,
যেটা শুরু থেকে শেষ অব্দি সব গুলো সংখ্যা আর "কী" প্রিন্ট করে দেখিয়েছে ।
আবার সেই সাথে আরেকটা নতুন জিনিশ আমরা ব্যবহার করেছি ।
আমরা ইটারেটর কে বলে দিয়েছি কে ফার্স্ট আর কে সেকেন্ড ।
এখানে ফার্স্ট সেকেন্ড মানে হলো "কী " আর "ভেল্যু" ।
ইটারেটর প্রথমে পয়েন্ট করবে "কী" পরে পয়েন্ট করবে ঐ কী এর আন্ডারে যে ভেল্যু আছে সেটা !
তো চটপট নিজের কম্পিউটারে প্রোগ্রাম টা রান করে দেখো তো , যা বললাম ঠিক কিনা ?
আমরা এখন আরেকটা জিনিশ দেখবো !
শুরুতে বলেছিলাম , "কী" গুলা অটোমেটিক সর্ট হয়ে যায় । সেটাই দেখবো চলো !
যেটা শুরু থেকে শেষ অব্দি সব গুলো সংখ্যা আর "কী" প্রিন্ট করে দেখিয়েছে ।
আবার সেই সাথে আরেকটা নতুন জিনিশ আমরা ব্যবহার করেছি ।
আমরা ইটারেটর কে বলে দিয়েছি কে ফার্স্ট আর কে সেকেন্ড ।
এখানে ফার্স্ট সেকেন্ড মানে হলো "কী " আর "ভেল্যু" ।
ইটারেটর প্রথমে পয়েন্ট করবে "কী" পরে পয়েন্ট করবে ঐ কী এর আন্ডারে যে ভেল্যু আছে সেটা !
তো চটপট নিজের কম্পিউটারে প্রোগ্রাম টা রান করে দেখো তো , যা বললাম ঠিক কিনা ?
আমরা এখন আরেকটা জিনিশ দেখবো !
শুরুতে বলেছিলাম , "কী" গুলা অটোমেটিক সর্ট হয়ে যায় । সেটাই দেখবো চলো !
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int,int>mp;
mp.insert(make_pair(3,30));
mp.insert(make_pair(4,40));
mp.insert(make_pair(5,50));
mp.insert(make_pair(2,20));
mp.insert(make_pair(1,10));
map<int,int>::iterator it;
for(it=mp.begin(); it!=mp.end(); it++)
{
cout<<it->first<<" "<<it->second<<"\n";
}
return 0;
}
আমরা এখানে যদিও ১,২ "কী" এর ভেল্যু সবার শেষে ম্যাপ এ ঢুকিয়েছি ,
তারপরেও প্রিন্ট করলে দেখতে পাবে সেই আগের মতো ই ১ থেকে প্রিন্ট হচ্ছে !
মজার না ব্যপার টা ?
আশা করি বুঝতে পেরেছো !
আজ এখানেই শেষ করলাম ।
পরবর্তী তে এই ম্যাপ নিয়েই আরো কাজ করবো আমরা । তাই আগে বেশি বেশি প্র্যাকটিস করে নাও ।
ভালো থাকো ! হ্যাপি কোডিং ।
তারপরেও প্রিন্ট করলে দেখতে পাবে সেই আগের মতো ই ১ থেকে প্রিন্ট হচ্ছে !
মজার না ব্যপার টা ?
আশা করি বুঝতে পেরেছো !
আজ এখানেই শেষ করলাম ।
পরবর্তী তে এই ম্যাপ নিয়েই আরো কাজ করবো আমরা । তাই আগে বেশি বেশি প্র্যাকটিস করে নাও ।
ভালো থাকো ! হ্যাপি কোডিং ।
Written By -