الوصول إلى متغيرات الأعضاء من خلال Boost Lambda النائب

StackOverflow https://stackoverflow.com/questions/2323413

  •  22-09-2019
  •  | 
  •  

سؤال

أحاول طباعة متغير العضو الثاني لجميع العناصر في خريطة 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(" "));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top