2010-02-24 70 views
4

訪問成員變量我試圖使用lambda表達式通過升壓拉姆達佔位

map<int, int> theMap; 
for_each(theMap.begin(), theMap.end(), 
     cout << bind(&pair<int, int>::second, _1) << constant(" ")); 

打印所有項目的第二個成員變量在STL地圖,這是不進行編譯。我基本上想要去引用佔位符。任何想法我在這裏失蹤?

在此先感謝!

回答

2

std::map將增加const,其重點;這是爲了防止搞亂順序。您對應該是:

std::pair<const int, int> 

像dirkgently表明,使用value_type始終得到正確的類型。冗長減輕用一個typedef:

typedef std::map<int, int> int_map; 

int_map::value_type::second 
3

嘗試:

for_each(theMap.begin(), theMap.end(), 
     cout << bind(&map<int, int>::value_type::second, _1) << constant(" ")); 
+0

很好,謝謝dirkgently和GMAN,這個工作和在使用編譯所說的話相結合纔有意義。乾杯! – Demps 2010-02-24 03:32:51