博主最近发现在C++11里for循环有一种更方便的用法:
for(auto &(变量):范围)
vector<int> v;
for(vector<int>::iterator it=v.begin() ;it!=v.end() ;it++ )
printf("%d ",*it);
printf("\n");
for(auto &s:v)
printf("%d ",s);
上面两个是等价的,第二种这样代码少好多,可是当我使用经典的devc++时,居然报错:
[Error] range-based 'for' loops are not allowed in C++98 mode
c++98和c++11是什么关系呢?
涉及到C/C++版本和标准的最常见的地方就是编译选项了,比如常见的 -std=c++11 就是使用C++11的标准编译,关于 C/C++ 各个版本标准的差异我们可能无法全部记住,但是一些主要的版本更替,还是很有必要了解一下的。
源自:https://blog.csdn.net/albertsh/article/details/89192242
具体方法:
原来那个是c++11的新特性,我们的编译器不支持C++,那怎么让它知道这是C++11支持的呢?【其他编译器也可以】
一:在编译器里找到“编译选项”
在devc++里,我们点击“工具”,点击里面编译选项
二:在编译选项卡里,打勾“编译时加入以下命令
”
在框里输入:-std=<你要的版本>。
比如-std=c++11
,点击确认就ok了。
其他编译器差不多的,我们只是改了一下编译标准,升级了你的编译器使用的标准。