4

ラムダ式を使用して、stlマップ内のすべてのアイテムの2番目のメンバー変数を出力しようとしています

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

しかし、これはコンパイルではありません。基本的に、プレースホルダーの参照を解除したいと思います。私がここで何を見逃しているのか分かりますか?

前もって感謝します!

4

2 に答える 2

3

試す:

for_each(theMap.begin(), theMap.end(), 
         cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
于 2010-02-24T03:16:23.893 に答える
2

std::mapconstそのキーに追加されます。これは、注文を台無しにするのを防ぐためです。ペアは次のようになります。

std::pair<const int, int>

ひどく提案するように、value_type常に正しいタイプを取得するためにを使用してください。冗長性はtypedefで軽減されます。

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

int_map::value_type::second
于 2010-02-24T03:19:31.330 に答える