4

我正在尝试使用 lambda 表达式打印 stl 映射中所有项目的第二个成员变量

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::map将添加const到它的关键;这是为了防止弄乱排序。你的配对应该是:

std::pair<const int, int>

就像 dirkgently 建议的那样,使用value_type总是得到正确的类型。使用 typedef 可以减轻冗长:

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

int_map::value_type::second
于 2010-02-24T03:19:31.330 回答