<分区>
我想遍历一个结构指针 vector 并对每个指针做一些工作。在使用谷歌和这个网站研究了这个问题之后,我一直在尝试使用以下代码,但是没有运气让代码编译。
我使用的循环如下,我试过两种
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);
}*/
我的 vector 在头文件中被声明为静态的
class Mg_Server {
public:
Mg_Server(){}
~Mg_Server(){}
// functions
private:
struct mg_instance{
struct mg_server * server_ctx;
bool running;
};
// stuff
static vector<mg_instance *> servers;
};
并且我已经在 cpp 文件中使用实例化了 vector
vector<Mg_Server::mg_instance *> Mg_Server::servers;
我正在使用 CentOS 5.8 编译这段代码
g++44 -Wall -c -std=c++0x "some include directories" -g -D LINUX -m64 -ansi src/mg_server.cpp
我收到以下错误。第 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 中迭代 vector ?