C++ 用于C+中向量上的每个+;11

C++ 用于C+中向量上的每个+;11,c++,c++11,vector,C++,C++11,Vector,我想迭代一个结构指针向量,并对每个指针做一些工作。在使用google和这个网站研究了这个问题之后,我一直在尝试使用下面的代码,但是没有成功地编译代码 我使用的循环如下,我尝试了两种类型 for (auto & i : Mg_Server::servers) { printf("%s\n", i->server_ctx->ns_server->server_data); } /* for (vector<Mg_Server::mg_instance *&g

我想迭代一个结构指针向量,并对每个指针做一些工作。在使用google和这个网站研究了这个问题之后,我一直在尝试使用下面的代码,但是没有成功地编译代码

我使用的循环如下,我尝试了两种类型

for (auto & i : Mg_Server::servers)
{
    printf("%s\n", i->server_ctx->ns_server->server_data);
}

/*
for (vector<Mg_Server::mg_instance *>::size_type i = 0; i != Mg_Server::servers.size; ++i)
{
    printf("%s\n", Mg_Server::servers[i]->server_ctx->ns_server->server_data);
}*/
我得到了以下错误。第58行是if语句在for循环之后开始的位置

src/mg_server.cpp:47: warning: ‘auto’ will change meaning in C++0x; please remove it
src/mg_server.cpp:47: error: expected initializer before ‘:’ token
src/mg_server.cpp:58: error: expected primary-expression before ‘if’
src/mg_server.cpp:58: error: expected ‘;’ before ‘if’
src/mg_server.cpp:58: error: expected primary-expression before ‘if’
src/mg_server.cpp:58: error: expected ‘)’ before ‘if’

我应该如何在C++0x中迭代向量?

g++4.4
不支持基于范围的for循环。请参阅本页。在版本4.6中添加了支持。你应该


如果您不能这样做,您应该使用迭代器,或者继续使用迭代器

g++4.4
不支持基于范围的for循环。请参阅本页。在版本4.6中添加了支持。你应该

g++44 -Wall -c -std=c++0x "some include directories" -g -D LINUX -m64 -ansi src/mg_server.cpp
如果您不能这样做,您应该使用迭代器,或者继续使用迭代器

g++44 -Wall -c -std=c++0x "some include directories" -g -D LINUX -m64 -ansi src/mg_server.cpp
-ansi
覆盖
-std=…
。移除它


-ansi
覆盖
-std=…
。删除它。

我认为您的问题是g++-4.4,而不是代码本身使用
MGU服务器::服务器
而不是
MGU服务器:服务器
。您的代码中甚至没有
if
。。。请提供一个最小的示例并提供完整的代码。(您对循环使用的是正确的语法,也许g++4.4还不够新?@RSahu完美捕获!这是当你投票关闭一个类型:-)@RSahu,尽管打字错误是相同的我认为你的问题是g++-4.4,而不是代码本身使用
Mg_服务器::服务器
而不是
Mg_服务器:服务器
。你的代码中甚至没有
if
。。。请提供一个最小的示例并提供完整的代码。(您对循环使用的是正确的语法,也许g++4.4还不够新?@RSahu完美捕获!这是当你投票关闭一个类型:-)@RSahu,尽管打字错误是相同的
src/mg_server.cpp:47: warning: ‘auto’ will change meaning in C++0x; please remove it
src/mg_server.cpp:47: error: expected initializer before ‘:’ token
src/mg_server.cpp:58: error: expected primary-expression before ‘if’
src/mg_server.cpp:58: error: expected ‘;’ before ‘if’
src/mg_server.cpp:58: error: expected primary-expression before ‘if’
src/mg_server.cpp:58: error: expected ‘)’ before ‘if’
g++44 -Wall -c -std=c++0x "some include directories" -g -D LINUX -m64 -ansi src/mg_server.cpp