C++11的for each输出

这篇博客介绍了C++实验课的一个任务,即如何使用C++11的for each循环来输出关联容器map。作者分享了在学习过程中遇到的困难,并提供了两种解决方案,包括C++11的新特性和宏定义的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++实验课要求用for each 循环来实现关联容器 map 的输出,一开始完全萌比。查了好久的资料才整理出下面的:

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

map<int, string> m;
 // 1
for (    auto &v : m)  
     {
         cout<<v.first<<" "<<v.second<<endl;
    }

 // 2 lamda表达式
 for_each(m.begin(),m.end(),[](map<int,string>::reference a){
//不要少了reference,不然会报错。
         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);

还有一种宏定义的方法:

//定义
#define foreach(container,it) \
    for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
//输出
foreach(m,it)
    {
        cout<<it->first<<","<<it->second<<endl;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值