|
啥是foreach?。foreach的中文意思就是基于范围的for循环。
foreach在C#中早就有了,在java8里也有了。
现在C++11也支持foreach了。
观察以下C#代码:
- // cs_foreach.cs
- class ForEachTest
- {
- static void Main(string[] args)
- {
- int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
- foreach (int i in fibarray)
- {
- System.Console.WriteLine(i);
- }
- }
- }
复制代码
代码来自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#差不多。如下:
- #include <iostream>
- int main(int argv, char** argc)
- {
- int i[] = { 0,1,2,3,4,5,6,7,8,9 };
- for (auto var : i)
- {
- std::cout << var << std::endl;
- }
- }
复制代码
输出结果:
0
1
2
3
4
5
6
7
8
9
这样的话是只读的方式访问i变量,无法修改容器的值。
如何修改容器的值呢?
- #include <iostream>
- int main(int argv, char** argc)
- {
- int i[] = { 1,2,3,4,5 };
- for (auto &var : i)
- {
- var++; //i+1
- std::cout << var << std::endl;
- }
- return 0;
- }
复制代码
我在auto那里加上了一个"&"就可以实现修改i的值了。

一己之见。菜鸟留住,大牛飞过~ |
上一篇: VC实现【API钩取】【调试法】附加调试器下一篇: 【笔记】C++控制台的OD
|