std::pair
الزوج المرتّب std::pair
std::pair يجمع قيمتين من نوعين مختلفين (أو متطابقين) بكائن واحد بسيط — أداة صغيرة لكن شائعة جدًا مع الخوارزميات والحاويات.
بدل تعريف struct صغيرة كل مرة تحتاج ربط قيمتين معًا، std::pair<T1, T2> جاهز فورًا بحقلين اسميهما ثابتان first وsecond. يُستخدم بكثرة كنوع عنصر std::map (كل عنصر بالخريطة فعليًا pair<const Key, Value>)، ومع دوال تُرجع قيمتين معًا مثل نتيجة عملية إدراج بالحاويات.
الصياغة
std::pair<T1, T2> name = {value1, value2};
name.first; name.second;📄 مثال
#include <utility>
std::pair<std::string, int> student = {"عمر", 90};
std::cout << student.first << ": " << student.second; // عمر: 90
auto p = std::make_pair(3, 4.5); // استنتاج تلقائي للنوعين
std::cout << p.first << ", " << p.second;أهم النقاط
| العنصر | الوظيفة |
|---|---|
| first / second | الوصول للقيمتين المخزّنتين بأسماء ثابتة |
| std::make_pair(a, b) | دالة مساعدة تستنتج النوعين تلقائيًا بدل كتابتهما صراحة |
| المقارنة (==, <) | pair تدعم المقارنة مباشرة: تقارن first أولًا، ثم second عند التعادل |
💡 نصائح عملية
- استخدم structured bindings الحديثة auto [key, value] = pairInstance; لأسماء أوضح من first/second
- map و unordered_map يخزّنان عناصرهما فعليًا كـ pair — فهم pair يسهّل فهم كيف تعمل التكرار عليهما
⚠️ أخطاء شائعة
- نسيان أن أسماء الحقلين ثابتان دائمًا first وsecond بغض النظر عن معناهما — يقلّل وضوح الكود لو استُخدم بدون تعليق أو structured bindings
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.