繁体   English   中英

每个(in)和for(:)之间有什么区别?

[英]What is the difference between for each ( in ) and for ( : )?

作为拥有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 )循环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 ++参考网站。

这两个循环之间有什么区别?

第一个称为基于范围的for循环 ,是该语言的C ++ 11特性。 它允许您在具有可用的begin()和end()方法(成员或非成员)或数组的范围内进行迭代。

第二种是Microsoft特定的语法,可用于C ++ / CLI,但也可用于C ++。 它允许迭代数组或集合。 不建议使用它,并且应优先选择基于范围的for循环。 ,每个,在

for each循环由Microsoft Visual C ++提供。 请参阅: http//msdn.microsoft.com/en-us/library/xey702bw%28VS.80%29.aspx

它不是标准的C ++并且很老(在VS2005中引入)。 编译器(VS)在编译时将此循环转换为正确的循环。

因此,最好坚持使用常规for ( ; ; )循环或for ( : ) :)循环以允许与其他编译(如g ++ for ( : )兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM