[সি++ পর্ব ১৮.৫] প্রায়োরিটি কিউ

0
43

কিউ-এর ক্ষেত্রে আমরা দেখেছিলাম, কন্টেইনারটিতে যে ভ্যারিয়েবল সবার আগে আসছে, তার প্রসেসিং হচ্ছে সবার আগে। কিন্তু ছোটবেলা থেকে তো অভ্যাস আমাদের যে বড় তার প্রসেসিং সবার আগে দেখার! 😉 এই সুবিধা নেওয়ার জন্যই আমরা ব্যবহার করতে পারি priority_queue কন্টেইনারটি। এটি যা করবে তা হল, একের পর এক ভ্যারিয়েবল নিবে ঠিকই, এবং সাজানোর সময় যেটা সবচেয়ে বড়, সেটাকে রাখবে সবার সামনে। যেমন, আমরা যদি ৭, ৮, ১৫, ১১, ৬৯, ৪২০ ইনপুট দি, সেটা এই কন্টেইনার সাজিয়ে রাখবে এই ক্রমেঃ ৪২০, ৬৯, ১৫, ১১, ৮, ৭।

যেভাবে ডিক্লেয়ার করবো

প্রায়োরিটি কিউ ব্যবহার করার জন্য আমাদের আলাদা কোনো হেডার ফাইল লাগবে না। queue হেডার ফাইলটি ইনক্লুড করলেই হয়ে যাবে। এবং আগের মতই এর ডিক্লারেশন হবে নিচের মতঃ

priority_queue <int> pq;

কন্টেইনারে ভ্যারিয়েবল ইনপুট দিব push() ব্যবহার করে

এটা রান করলে ৫ টা ভ্যারিয়েবল ইনপুট নিয়ে কন্টেইনারে রাখবে।

কন্টেইনারে সবার সামনের ভ্যারিয়েবল এক্সেস করবো top() দিয়ে

এবার আমরা আমাদের আগের কোড থেকেই সবার সামনে কোন ভ্যারিয়েবল আছে সেটা দেখবো এভাবেঃ

কোডটা রান করে ৫ টি ইন্টিজার ইনপুট দিলে আউটপুট হবে নিচের মতঃ

Snap 2015-07-08 at 10.58.04

অর্থাৎ সবচেয়ে বড় উপাদানটি থাকবে সবার সামনে!

কন্টেইনার খালি কি না চেক করবো empty() দিয়ে

কোডটা রান করলে এটি ৫ টি ইন্টিজার ইনপুট নিবে। এরপর কিছু আউটপুট দিবে না, কারণ কন্টেইনারটি খালি না। এতে ৫ টি ইন্টিজার আছে!

কন্টেইনারে সর্বমোট কয়টি ভ্যারিয়েবল আছে চেক করবো size() দিয়ে

এই কোড রান করলে আউটপুট হবে নিচের মত।

Snap 2015-07-08 at 11.03.28

প্রসেসিং শেষে সবার সামনের ভ্যারিয়েবল বের করে দিব pop() দিয়ে

আমরা নিচের কোডটা দেখেই এবার প্রায়োরিটি কিউ-এর পুরো ব্যাপারটা একসাথে বুঝে নেওয়ার চেষ্টা করবো। আমরা যা করবো, তা হল প্রথমেই ১০ টি ইন্টিজার রাখবো কন্টেইনারটিতে। এরপর, যতক্ষণ কন্টেইনারটি খালি হবে না ততক্ষণ সবার সামনের ইন্টিজার প্রিন্ট করবো এবং সেটি কন্টেইনার থেকে সেটি বের করে দিব। এরপর সবশেষে কন্টেইনারটির সাইজ প্রিন্ট করবো। বলা বাহুল্য সেটি হবে শুণ্য।

কোডটি রান করে আমরা ১০ টা ইন্টিজার ইনপুট দিলে নিচের মত আউটপুট দেখতে পাব।

LEAVE A REPLY

Please enter your comment!
Please enter your name here