打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UC头条:C 11之基于范围的for循环
userphoto

2023.06.22 山西

关注

基于范围的for循环

C++98遍历方式

在C++98标准中,当我们遍历数组时,一般方法就是下标遍历和指针遍历。

intarr[]={1,2,3,5,6};//下标遍历for(size_ti=0;i<>

当然还有一种遍历方式,需要包含头文件的for_each遍历。参数依次是:起始地址、结束地址、回调函数。地址是左闭右开区间[begin,end)。

#include#includevoidprint(constint&elem){std::cout<<><'';} for_each遍历std::for_each(arr,arr+sizeof(arr)=''><'';}><><='' p=''><=''>

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::vectorvec{1,5,6,9,4};for(constautoiter=vec.begin;iter!=vec.end;++iter){std::cout<<*iter<<'';}std::cout<<><><>< p=''><><><><><>

这里就需要注意了前者iter类型是迭代器对象,后者elem是解引用后的对象。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C#与STL的容器对应说明(转摘)
C++迭代器 iterator详解
你知道python的迭代,循环,递归与遍历怎么使用吗?
C++11新标准之范围for语句
【C 】运用循环 数组实现排序的四种常用方法(桶排序、冒泡排序、选择排序、插入排序)
C++ find()函数用法(一般用于vector的查找)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服