for_each(,,[](stringmap::value_type& x){cout<<" "<< x.second;}) 这个用法没看明白
hi,大家好
代码如下:
http://www.cplusplus.com/reference/stl/unordered_multimap/equal_range/
// unordered_multimap::equal_range
#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>
typedef std::unordered_multimap<std::string,std::string> stringmap;
int main ()
{
stringmap myumm = {
{"orange","FL"},
{"strawberry","LA"},
{"strawberry","OK"},
{"pumpkin","NH"}
};
std::cout << "Entries with strawberry:";
auto range = myumm.equal_range("strawberry");
for_each (
range.first,
range.second,
[](stringmap::value_type& x){std::cout << " " << x.second;}//这个用法没看明白,请高手解释一下吧
);
return 0;
}
[解决办法]
[](stringmap::value_type& x){std::cout << " " << x.second;}
[]用于捕获函数外的变量,空表示不捕获,=表示捕获所有,&表示引用捕获()里面是函数参数声明,如果函数有复杂返回值,则在参数后面添加“->返回值类型”,{}是函数体,如果函数有简单返回值,可以直接使用return语句。
for_each函数第三个参数是函数指针,也即遍历的方式,在这里,直接输出map的第二项。