c++11 for循环多了新的语法 ,下面用三种方法来遍历一个map:
map<int, string> m;
// 1. 用auto变量
for (auto &v : m)
{
cout<<v.first<<" "<<v.second<<endl;
}
// 2. lambda表达式
for_each(m.begin(),m.end(),[](map<int,string>::reference a){
cout<<a.first<<" "<<a.second<<endl;
};
// 3. for_each
void fun(map<int,string>::reference a) //不要少了reference,不然会报错
{
cout<<a.first<<" "<<a.second<<endl;
}
for_each(m.begin(),m.end(),fun);
c++11中增加的for_each,在很多地方都用它来使用STL遍历容器:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a = {1,2,3,4};
for_each(a.begin(),a.end(),[](int i)->void{ cout << i <<" ";});
return 0;
}