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

iFr*_*cht 22 c++ loops for-loop

作为拥有python背景的人,当我第一次看到for ( : )循环时,我感到非常惊讶:

vector<int> vec = {1,2,3,4};
int sum = 0;
for (int i : vec){
    sum += i;
}
//sum is now 10
Run Code Online (Sandbox Code Playgroud)

这是一个非常有用的结构,只要您不需要多次索引值,就应该使用它.

但今天我发现还有一个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
Run Code Online (Sandbox Code Playgroud)

有趣的是,第二个谷歌的谷歌搜索结果主要与微软有关,而不是通常的c ++参考网站.

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

Mar*_*ila 20

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

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

  • 自VS2005以来,这已经在VC++中提供,在C++ 11完成之前6年,它引入了基于范围的for循环. (6认同)
  • 微软喜欢将内容介绍到C++中,然后不建议使用它,似乎;)感谢您的解释! (2认同)