PDA

View Full Version : سوال: کاربرد pair چیست؟



jeson_park
جمعه 06 اسفند 1389, 15:49 عصر
با سلام
می خواستم بدونم کاربرد pair که در هدر <utility> هست چیه؟؟
در واقع چیزی که من درست متوجه نشدم اینه که چرا میان 2 تا شی رو یکی می کنند :گیج:
به عناون مثال فرض کنید ما یه enum به شکل زیر داریم


enum Object
{
PLAYER1 = 0,
PLAYER2,
PLAYER3,
PLAYER4,
PLAYER5,
PLAYER6,
PLAYER7,
PLAYER8,
PLAYER9,
PLAYER10,
PLAYER11,
};

خب حالا کد زیر چه کای رو انجام میده؟


typedef std::pair<Object, Object> ObjkPair;
typedef std::pair<ObjkPair, ObjkPair> ObjkPairPair;
std::vector<ObjkPair> Pairs_1;
std::vector<ObjkPair> Pairs_2;

mehdi.mousavi
شنبه 07 اسفند 1389, 15:02 عصر
سلام.
هر وقت که لازم هستش دو Object مختلف رو بصورت یک Object ببینیم، می تونیم از pair استفاده کنیم. در کد فوق، شما یک enum تعریف کرده اید که نشون دهنده "بازیکنان" یک سیستم هستش. سپس، دو به دو، بازیکنان رو بصورت pair هایی تعریف کرده اید، که احتمالا بخواهید نشون بدید که Player1 هم تیمی Player4 هستش (این میشه typedef اول شما، یعنی ObjkPair). (اینجا، داریم دو Object مختلف، یعنی Player1 و Player4 رو به بصورت یک Object می بینیم).

حالا فرض کنیم که بازی ما، بازی پینگ پنگ دوبل هستش، یعنی در دو سر میز، دو هم تیمی، قرار گرفته اند و در کل 4 نفر مشغول بازی هستن. برای پیاده سازی این مساله، کد فوق اومده یک Pair جدید تعریف کرده، ObjkPairPair، که نشون میده چه کسانی مشغول بازی هستن. اینجا، در Pair اول، دو نفری که سمت چپ میز (بطور مثال) قرار گرفته اند و هم تیمی هستن قرار میگیره و در Pair دوم، حریف این دو نفر، که دو نفر دیگه هستن که اون سر میز قرار گرفته اند.

بازی پینک پنگ فقط یه حدس بود و یک مثال، برای اینکه شما رو متوجه کد فوق کنم. من نمیدونم هدف این کد پیاده سازی کدوم بازی هستش، اما گمان میکنم متوجه کاربرد pair شده باشید.

موفق باشید.