VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1435|回复: 3

[交流] C++11 Foreach简单使用

[复制链接]
24_avatar_middle
在线会员 发表于 2016-7-15 19:34:59 | 显示全部楼层 |阅读模式
啥是foreach?。foreach的中文意思就是基于范围的for循环。

foreach在C#中早就有了,在java8里也有了。

现在C++11也支持foreach了。

观察以下C#代码:


  1. // cs_foreach.cs
  2. class ForEachTest
  3. {
  4.     static void Main(string[] args)
  5.     {
  6.         int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
  7.         foreach (int i in fibarray)
  8.         {
  9.             System.Console.WriteLine(i);
  10.         }
  11.     }
  12. }
复制代码




代码来自MSDN:https://msdn.microsoft.com/zh-cn/library/ttw7t8t6(VS.80).aspx

输出结果:


0
1
2
3
5
8
13



这个代码意思就是遍历数组单元,然后放进i变量,每个foreach循环就会把变量传递一次。


Ok,那么我们知道了C#中是怎么实现的,那么来简单介绍一下C++11的foreach。

在C++11的foreach,"in"是":"


代码和C#差不多。如下:


  1. #include <iostream>

  2. int main(int argv, char** argc)
  3. {
  4.         int i[] = { 0,1,2,3,4,5,6,7,8,9 };

  5.         for (auto var : i)
  6.         {
  7.                 std::cout << var << std::endl;
  8.         }
  9. }
复制代码




输出结果:

0
1
2
3
4
5
6
7
8
9


这样的话是只读的方式访问i变量,无法修改容器的值。

如何修改容器的值呢?


  1. #include <iostream>

  2. int main(int argv, char** argc)
  3. {
  4.         int i[] = { 1,2,3,4,5 };

  5.         for (auto &var : i)
  6.         {
  7.                 var++; //i+1
  8.                 std::cout << var << std::endl;
  9.         }
  10.         return 0;
  11. }
复制代码




我在auto那里加上了一个"&"就可以实现修改i的值了。
C++11 Foreach简单使用

一己之见。菜鸟留住,大牛飞过~




上一篇:VC实现【API钩取】【调试法】附加调试器
下一篇:【笔记】C++控制台的OD
74_avatar_middle
在线会员 发表于 2016-8-6 07:19:12 | 显示全部楼层
補充:c++ foreach 可以使用在所有符合標準容器定義的容器上(std::vector,std::list... boost::array,boost::circular_buffer...) 數組也符合標準容器定義 故亦可使用
12_avatar_middle
在线会员 发表于 2016-8-6 10:37:01 | 显示全部楼层
C++11 Foreach简单使用  你看的什么书,这个在c11 不是早就有了吗,你才看到?
24_avatar_middle
ico_lz  楼主| 发表于 2017-3-2 21:01:55 | 显示全部楼层
zuiwuchang 发表于 2016-8-6 07:19
補充:c++ foreach 可以使用在所有符合標準容器定義的容器上(std::vector,std::list... boost::array,boost ...

咱记得只要有 begin 和 end 就能用foreach,不止这些。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-18 09:36

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表