Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是";对于每一个“;特定于微软? Visual C++ 2010接受: std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for each (auto i in v) std::cout << i << std::endl; std::vector v; v、 推回(1); v、 推回(2); v、 推回(3); 对于每个(v中的自动i) std::cout_C++_Syntax_Foreach_C++11 - Fatal编程技术网

是";对于每一个“;特定于微软? Visual C++ 2010接受: std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for each (auto i in v) std::cout << i << std::endl; std::vector v; v、 推回(1); v、 推回(2); v、 推回(3); 对于每个(v中的自动i) std::cout

是";对于每一个“;特定于微软? Visual C++ 2010接受: std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for each (auto i in v) std::cout << i << std::endl; std::vector v; v、 推回(1); v、 推回(2); v、 推回(3); 对于每个(v中的自动i) std::cout,c++,syntax,foreach,c++11,C++,Syntax,Foreach,C++11,当前的标准草案不包括for each(auto i in v)语法,只有for(auto i:myints),因此是的,它只是一个扩展。除了上面介绍的for循环版本外,c++0x标准共形版本还包括: std::for_each (v.begin(), v.end(), [] (int)->void { std::cout << i << std::endl; }); std::for_each(v.begin(),v.end(),[](int)->voi

当前的标准草案不包括
for each(auto i in v)
语法,只有
for(auto i:myints)
,因此是的,它只是一个扩展。

除了上面介绍的for循环版本外,c++0x标准共形版本还包括:

std::for_each (v.begin(), v.end(), [] (int)->void { 
    std::cout << i << std::endl;
});
std::for_each(v.begin(),v.end(),[](int)->void{

std::cout在VS2010中,对于任何此类疑问,请尝试在IDE项目设置中的
“C/C++->Language”
下使用
/Za
标志


至于你的查询,是的,这不是标准的C++语法。

< P>我也注意到微软的“每个循环”的警告;使用STL容器,如STD::vector,你不能通过引用传递变量,只能通过值和const引用。例如:

int myarr [] = {4, 6, 8, 10, 12, 15};
std::vector<int> mvt (myarr, myarr+6);

for each (int & x in mvt) //will not compile for reasons unbeknownst to those outside MS
   x+= 4; 
int myarr[]={4,6,8,10,12,15};
std::载体mvt(myarr,myarr+6);
for each(mvt中的int&x)//将不会编译,原因是MS之外的人不知道
x+=4;

如果您的编译器支持基于C++0x范围的for,我将使用它。如果不支持,我将使用BOOST_FOREACH或std::for_,每个都带有一个函数对象或lambda,因为它们是可移植的。无论您做什么,请远离Microsoft的“for each”如果他说的是编译成本机代码,不是C++而是C++,还是他错了?或者我错了吗?技术上,“C++ 0x标准”是一个矛盾修饰法。它还不是标准。(当它变成一个时,它不再被称为C++ 0x);@jalf好吧,因为我们还没有更好的名称,我认为它是最好的…@Johannes不,它总是编译成IL,或者编译成神秘的IL和本机代码的混合体。只有在使用CLR支持(/CLR选项)编译时,这种语法才可能起作用。我必须更正我上面的评论。对于vc9和vc10,这种语法也可以在本机代码中编译。这不应该是,应该需要/clr选项。我知道,只是学究。(虽然我会说“C++0x一致”,但没有“标准”。或者只是“C++0x版本”,对每个版本使用
(mvt中的const int&x)
工作正常,您可以使用
const\u cast
使项目可编辑
int myarr [] = {4, 6, 8, 10, 12, 15};
std::vector<int> mvt (myarr, myarr+6);

for each (int & x in mvt) //will not compile for reasons unbeknownst to those outside MS
   x+= 4;