【发布时间】:2014-04-03 11:30:30
【问题描述】:
作为一个有python背景的人,当我第一次看到for ( : )循环时,我很惊讶:
vector<int> vec = {1,2,3,4};
int sum = 0;
for (int i : vec){
sum += i;
}
//sum is now 10
这是一个非常有用的构造,当您不需要多次索引某个值时可能应该使用它。
但今天我发现还有一个for each ( in )循环,这样使用:
vector<int> vec = {1,2,3,4};
int sum = 0;
for each (int i in vec){
sum += i;
}
//sum is now 10
有趣的是,第二个的谷歌搜索结果大多与微软有关,而不是通常的 c++ 参考网站。
这两个循环有什么区别?
【问题讨论】:
-
第一个是标准 c++(准确地说是 c++11),第二个可能是用宏完成的,或者是编译器特定的而不是标准的。
-
第二个是 C++/CLI 或 C++/CX 语法,用于迭代实现 IEnumerable 接口的对象。第一个是 C++ 11 迭代器的常规语法。
-
@Stefan 我们可以排除宏选项,它们在 VS2013 中以紫色突出显示。它看起来像一个常规关键字。但是是的,它似乎是非 c++11 的。