الوصول إلى متغيرات الأعضاء من خلال Boost Lambda النائب
سؤال
أحاول طباعة متغير العضو الثاني لجميع العناصر في خريطة STL باستخدام تعبير Lambda
map<int, int> theMap;
for_each(theMap.begin(), theMap.end(),
cout << bind(&pair<int, int>::second, _1) << constant(" "));
لكن هذا لا يجمع. أريد أساسًا إلغاء الإشارة إلى العنصر النائب. أي فكرة عما أفتقده هنا؟
شكرا لك مقدما!
المحلول
std::map
سوف يضاف const
إلى مفتاحها ؛ هذا لمنع العبث بالطلب. يجب أن يكون زوجك:
std::pair<const int, int>
كما يقترح ديركج ، استخدم value_type
للحصول على النوع الصحيح دائمًا. يتم تخفيف الفعل مع typedef:
typedef std::map<int, int> int_map;
int_map::value_type::second
نصائح أخرى
محاولة:
for_each(theMap.begin(), theMap.end(),
cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
لا تنتمي إلى StackOverflow