初探c++11之for循环篇

转自:https://www.cnblogs.com/l00l/archive/2012/02/03/2337557.html

在很多语言中都有类似foreach之类的循环关键字。在C++11中,也添加了类似的语言特性。

不过,这里首先说一句,在STL已经有类似的东西,std::for_each,感兴趣可以自己查一下,这里不赘述。

 

首先,给出一个参考文档

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html

 

其次,给出一个示例

1 int array[5] = { 1, 2, 3, 4, 5 };
2 for (int& x : array)
3 x *= 2;

这样我们可以看到它的大概用法。值得注意的是,这里的循环变量是一个引用,这样可以在循环过程中改变它的值。

 

那么,接下来会有几个疑问。第一,这种for循环的标准形式是什么。第二,这个示例给出的是一个数组的例子。但是类似数组的,还有stl里面的那些容器,在那上面可以用这种表达形式吗?第三,这个示例中for循环中的array是一个数组,也就是是指针常量,那么如果这里array是一个指针变量可以吗?

 

首先,对于第一个问题,它的标准形式如下

for ( for-range-declaration : expression ) statement

for-range-declaration:
     type-specifier-seq attribute-specifieropt declarator
也就是说,for循环中冒号后面的一项是一个表达式。通过查阅前面给出的参考文档,这个表达式应该或者是一个数组,或者是一个拥有begin()和end()方法的对象。

 

对于第二个问题,vector, list之类的stl容器都是可以的。只要是有begin()和end()方法的对象都可以。那么,这么说,我们自己写一个类,有begin()和end()方法都可以吗?当然,这里要求begin()和end()方法返回两个可以比较的对象,并且支持*,++和!=三种操作。

到这里,我们应该写一些代码测试一下。可是,我这里现在只有visual studio 2010,而它有不支持这个特性……只能等回头建立个gcc的环境来测试了。

 

对于第三个问题,答案是不可以的。如果这个参数是数组,则必须要知道它的大小。而一个指针变量是无法知道大小的。在参考文档中是这么写的,If _RangeTis an array of unknown size or an array of incomplete type, the program is ill-formed.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值