English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
صف الأولوي في C++ هو حاوية مشتقة في STL يفكر فقط في العنصر ذي الأولوية الأعلى. يتبع الصف العادي استراتيجية FIFO، بينما يتبع الصف الأولوي الأولوية في إزالة العناصر، أي العنصر ذي الأولوية الأعلى أولاً.
إنه يشبه الصف العادي في بعض النواحي، ولكن يختلف فيما يلي:
في الصف الأولوي، كل عنصر في الصف مرتبط ببعض الأولوية، ولكن الأولوية لا توجد في بنية البيانات للصف.
سيتم إزالة العنصر ذي الأولوية الأعلى في الصف الأولوي أولاً، وسيتبع الصف الأولويFIFO (أولاً يدخل أولاً يخرج أولاً)استراتيجية، مما يعنيأولاًسيتم إزالة العناصر المدخلة أولاً.
إذا كان هناك عدة عناصر لها نفس الأولوية، فإن ترتيب العنصر في الصف سيتم النظر فيه.
priority_queue<int> variable_name;
دعونا نتعرف على الصف الأولوي من خلال مثال بسيط.
في الصورة أعلاه، قمنا بإدراج العنصر باستخدام دالة push()، ويتم الإدراج بنفس الطريقة مثل الصف العادي. ولكن، عندما نستخدم دالة pop() لإزالة العنصر من الصف، سيتم إزالة العنصر ذي الأولوية الأعلى أولاً.
دالة | وصف |
---|---|
push() | سيقوم بإدراج العنصر الجديد في الصف الأولوي. |
pop() | سيقوم بإزالة العنصر ذي الأولوية الأعلى من الصف. |
top() | يستخدم هذا الدالة لتحديد العنصر الأعلى في قائمة الأعمدة المميزة. |
size() | يعود بحجم قائمة الأعمدة المميزة. |
empty() | يحقق مما إذا كانت القائمة فارغة. بناءً على التحقق، يعود بحالة القائمة. |
swap() | يقوم بتغيير العناصر في قائمة الأعمدة المميزة مع أخرى لها نفس النوع والحجم. |
emplace() | يضيف عنصرًا جديدًا في أعلى قائمة الأعمدة المميزة. |
لنقوم بإنشاء برنامج بسيط لقائمة الأعمدة المميزة.
#include<iostream> #include<queue> using namespace std; int main() { priority_queue<int> p; // إعلان المتغير. p.push(10); // إدراج 10 في الصف، top=10 p.push(30); // إدراج 30 في الصف، top=30 p.push(20); // إدراج 20 في الصف، top=20 cout << "عدد العناصر المتاحة إلى 'p':" << p.size() << endl; while(!p.empty()) { cout << p.top() << endl; p.pop(); } return 0; }
في الكود المقدم، قمنا بإنشاء قائمة الأعمدة المميزة ودرجنا فيها ثلاثة عناصر، وهي 10 و30 و20. بعد درج هذه العناصر، استخدمنا حلقة while لإظهار جميع العناصر في القائمة الأعمدة المميزة.
نتائج الإخراج
عدد العناصر المتاحة إلى 'p': 3 30 20 10
لنلقي نظرة على مثال آخر لقائمة الأعمدة المميزة.
#include<iostream> #include<queue> using namespace std; int main() { priority_queue<int> p; // إعلان قائمة الأعمدة المميزة priority_queue<int> q; // إعلان قائمة الأعمدة المميزة p.push(1); // إدراج '1' في p. p.push(2); // إدراج '2' في p. p.push(3); // إدراج '3' في p. p.push(4); // إدراج '4' في p. q.push(5); // إدراج '5' في q. q.push(6); // إدراج '6' في q. q.push(7); // إدراج '7' في q. q.push(8); // إدراج '8' في q. p.swap(q); cout << "عناصر الصف المميز " << endl; while(!p.empty()) { cout << p.top() << endl; p.pop(); } cout << "قائمة الأعمدة المميزة هي:" << endl; while(!q.empty()) { std::cout << q.top() << std::endl; q.pop(); } return 0; }
في الكود أعلاه، قمنا بتعريف اثنين من الطوابير الأولوية، وهي p و q. قمنا بتعيين أربعة عناصر في الطابرة الأولوية 'p'، وأربعة عناصر في الطابرة الأولوية 'q'. بعد تعيين العناصر، استخدمنا دالة swap() لتغيير عناصر طابرة 'p' مع طابرة 'q'.
نتائج الإخراج
عناصر priority_queue هي 8 7 6 5 عناصر priority_queue هي 4 3 2 1