C++的新特性for-each


C++實驗課要求用for each 循環來實現關聯容器 map 的輸出,一開始完全萌比。查了好久的資料才整理出下面的:

  C++11新特性之一就是類似java的for each循環:

 1 map<int, string> m;
 2  // 1
 3 for (    auto &v : m)  
 4      {
 5          cout<<v.first<<" "<<v.second<<endl;
 6     }
 7 
 8  // 2 lamda表達式
 9  for_each(m.begin(),m.end(),[](map<int,string>::reference a){
10          cout<<a.first<<" "<<a.second<<endl;
11      });
12 
13 // 3 for_each
14  void fun(map<int,string>::reference a)  //不要少了reference,不然會報錯。
15 {
16          cout<<a.first<<" "<<a.second<<endl;
17 }
18 for_each(m.begin(),m.end(),fun);

 

還有一種宏定義的方法: 

1 //定義
2 #define foreach(container,it) \
3     for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
4 //輸出
5 foreach(m,it)
6     {
7         cout<<it->first<<","<<it->second<<endl;
8     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM