基于范围的for循环
C++98遍历方式
在C++98标准中,当我们遍历数组时,一般方法就是下标遍历和指针遍历。
intarr[]={1,2,3,5,6};//下标遍历for(size_ti=0;i
当然还有一种遍历方式,需要包含
#include
C++11范围遍历
上述的几种遍历方式的共同点就是都需要写明循环的一个范围。对于我们需要完整的遍历一个有范围的集合/数组时,完全可以让编译器自动计算出范围。因此C++11引入了基于范围的for循环。
格式:for(迭代的变量:数组){}
现在我们使用范围遍历对数组进行遍历。
for(constint&e:arr){std::cout<<><>< p=''><><><><>
然后我们可以在这里加入auto自动类型(C++11),遍历将会更加简单。
for(constauto&elem:arr){std::cout<<><>< p=''><><><><>
但范围遍历不能适用于所有情况,范围遍历的条件就是循环迭代的范围必须是可确定的。例如string、array、vector、list、map等都是可以正常使用的。而用户自定义写的类则需要自行提供自增运算符重载和赋值运算符重载。
int*ptr=arr;for(autoelem:ptr){std::cout<<><>< p=''><><><><>
遍历没有明确范围的数组,是不能使用范围遍历方法的。
点击加载图片
在使用范围遍历的方式遍历stl的容器时,如果你使用auto声明迭代器的变量,那么推导出来的类型是迭代器解引用后的对象。
std::vector
这里就需要注意了前者iter类型是迭代器对象,后者elem是解引用后的对象。
联系客服