c++ foreach宏

现在很多语言都支持foreach关键字,虽然看起来完全可以用for来实现完全一样的功能,但是foreach使用起来却更方便。

下面是C++中的一个循环(很多情况下,我们都是在一个迭代器范围内进行循环)

for (iterator iter = _First; iter = _End; ++ iter)

{

*iter = some_value;

}

如果但从这个简单例子来看,foreach的意义不大。但是

1)很多时候上式中的iterator很长,比如:std::vector<std::vector<std::string> >::iteator。写起来非常麻烦,虽然我们可以typedef,但是过几天你就忘记对应的typedef名字了。

2)因为iterator的类型是对应容器的,所以换个容器,比如原先是std::vector<std::string>,现在改称std::list<std::string>,所有的循环的iterator都要改。而且从循环本身来讲,他应该只是关注数据类型本身,而不是存储数据的容器类型。


要实现一个foreach最重要的就是如果通过一个不知道类型的迭代器来获取其对应的数据类型;C++的新标准添加了typeof关键字,解决了这个问题,但是现在大家基本上都使用的是老的C++标准来开发……

标准库提供了一个std::for_each(transform)函数,可以很方便的遍利。但是需要提供一个额外的funct

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值