std::queue
الطابور (FIFO) std::queue
std::queue حاوية مكيّفة تطبّق مبدأ FIFO — أول عنصر يدخل هو أول عنصر يخرج، بواجهة push/pop/front/back فقط.
مثل stack تمامًا من ناحية كونها container adapter (غلاف حول deque افتراضيًا)، لكن بمبدأ عكسي: push تضيف بالنهاية، وpop تزيل من البداية — تمامًا كطابور انتظار حقيقي. front تعطي أول عنصر (التالي بالدور)، وback تعطي آخر عنصر أُضيف. تُستخدم بكثرة بخوارزميات البحث بالعرض أولًا (BFS) ومعالجة المهام بترتيب وصولها.
الصياغة
std::queue<Type> name; name.push(value); name.pop(); name.front();
📄 مثال
#include <queue>
std::queue<std::string> tasks;
tasks.push("مهمة1");
tasks.push("مهمة2");
std::cout << tasks.front(); // مهمة1 — أول من دخل
tasks.pop();
std::cout << tasks.front(); // مهمة2أهم النقاط
| العنصر | الوظيفة |
|---|---|
| push(v) | إضافة عنصر بنهاية الطابور |
| pop() | إزالة العنصر الأول (الأقدم) — لا تُرجع قيمته |
| front() / back() | الاطلاع على أول عنصر (التالي بالدور) أو آخر عنصر أُضيف |
💡 نصائح عملية
- الأداة القياسية لتطبيق خوارزمية BFS (البحث بالعرض أولًا) على الأشجار والرسوم البيانية
- تحقق من !q.empty() دائمًا قبل front()/pop() لنفس سبب stack تمامًا
⚠️ أخطاء شائعة
- الخلط بين stack (LIFO) وqueue (FIFO) واستخدام الحاوية الخطأ لمنطق يحتاج الترتيب المعاكس
- استدعاء front() أو pop() على طابور فارغ بدون فحص empty() أولًا
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.