0
点赞
收藏
分享

微信扫一扫

【C++Primer】笔记之 【范围for语句】 for(auto &r : v); for(int num : nums)

IT程序员 2022-01-30 阅读 34

0.前言

C++11引入了一种更简单的for语句,这种语句可用于遍历序列的所有元素

1.语法形式

for(数据类型 变量 : 序列)
	循环语句

序列
可以是花括号括起来的初始值列表、数组、vectorstring,这些类型的特点是拥有能返回迭代器的 beginend成员

数据类型:变量
序列中的每个元素都能转换成该变量的类型,最简单的方法是使用auto类型说明符。
若需要对序列中的元素进行写操作,则需要声明成引用类型&

2.举例

下面的例子将vector对象中的每个元素都翻倍

vector<int>v={0,1,2,3,4};
//因为要对v中的元素进行写操作,所以是引用类型
for(auto &r : v)
	r*= 2;

博主自己的理解(便于理解,仅供参考)
上面的例子等价于如下传统for循环的写法

vector<int>v={0,1,2,3,4};
for(int i=0; i<v.size(); i++){
	v[i]*=2;  //r相当于v[i]
}

该例子来源于如下传统for语句
其中:
beg是指向v的第一个元素的迭代器
end是指向v的最后一个元素的下一个位置的迭代器
++beg 令beg指向v的下一个元素

for(auto beg= v.begin(), end= v.end(); beg!= end; ++beg){
	auto &r= *beg;
	r*= 2;
}
举报

相关推荐

0 条评论