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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签