是";对于每一个“;特定于微软? 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;