我正在尝试使用 lambda 表达式打印 stl 映射中所有项目的第二个成员变量
map<int, int> theMap;
for_each(theMap.begin(), theMap.end(),
cout << bind(&pair<int, int>::second, _1) << constant(" "));
但这不是编译。我基本上想取消引用占位符。知道我在这里缺少什么吗?
提前致谢!
尝试:
for_each(theMap.begin(), theMap.end(),
cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
std::map
将添加const
到它的关键;这是为了防止弄乱排序。你的配对应该是:
std::pair<const int, int>
就像 dirkgently 建议的那样,使用value_type
总是得到正确的类型。使用 typedef 可以减轻冗长:
typedef std::map<int, int> int_map;
int_map::value_type::second