use*_*170 0 c++ iterator vector c++11 c++98
std::vector<std::string> endpointLSRKey;
for(auto it = endpointLSRKey.begin(); it != endpointLSRKey.end(); ++it) {
lsr->setItem(0, "", *it, address);
}
Run Code Online (Sandbox Code Playgroud)
然后得到一个错误说"auto"改变了c ++ 11中的含义,删除它!
所以我改变它:
for(std::string& str : endpointLSRKey){
lsr->setItem(0, "", str, address);
}
Run Code Online (Sandbox Code Playgroud)
然后得到一个错误说"在C++ 98模式下不允许'循环'基于范围"
完全糊涂了,如何迭代它?
为什么有时它是c ++ 11而有时它是c ++ 98?
听起来你需要将编译器设置为C++ 11模式.错误消息:
在C++ 98模式下不允许使用"基于范围的''循环"
指出这一点.
执行此操作的方式取决于您的编译器.
当您看到此消息时:
得到一个错误说"auto"改变了c ++ 11中的含义
您的编译器仍处于C++ 98/03模式.该关键字auto存在于C++ 03中,但在大多数情况下没有任何意义,因为默认变量是自动存储.(你可以让一个变量进入静态存储用其标记static,也就是说,auto是static因为signed是unsigned(在C++ 98/03).
因为这个含义在C++ 98/03中并不真正有用,并且因为C++ 11中的含义发生了变化,所以C++ 03模式下的编译器可能会抱怨使用auto带有警告.如果您将警告视为错误,则会将其变为错误.因此,您看到的消息.