تخطَّ إلى المحتوى

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 الكامل بالعربي.