【C++】5.4.3 范围for语句

范围for语句基本形式:

复制代码
for(声明变量:序列容器)
{
    循环执行语句;
}

其中,"序列容器"是指花括号括起来的初始值列表、数组、vector或者string等类型的对象,主要特点是拥有能返回迭代器的 begin() 和 **end()**成员;

"声明变量"是一个类似声明的语句(变量类型 + 变量名),不过该变量类型有一个要求:序列中的每个元素都能转换成该类型。一般使用 auto 类型说明符来自动选择合适的类型。另外,如果要对序列中的元素执行写操作,这个变量需要声明成引用类型,如果只需要读的时候,可以声明成const & 。

一般使用如下,比如将其中元素翻倍:

复制代码
vector<int> vctIntNum = {1,2,3,4,5};
for(auto &w : vctIntNum)
{
    w *= 2;
}

范围for语句的定义来源于传统for语句:

复制代码
for(auto beg = v.begin(),end = v.end(); beg != end; ++beg)
{
    变量声明类型 r = *beg;
    循环操作;
}

因为范围for语句在最开始的初始化语句中,记录了该序列的end(),因此如果一旦在该序列添加或者删除元素,end函数的值就可能变得无效了。因此,使用迭代器或者范围for语句进行循环结构的编写时,尽量避免添加或者删除其中的元素。

相关推荐
hsjkdhs36 分钟前
C++之拷贝构造(浅拷贝与深拷贝)、this指针、内联函数
c++
默|笙36 分钟前
【c++】红黑树的部分实现
开发语言·c++
轩情吖1 小时前
Qt常用控件之QSpinBox
开发语言·c++·qt·控件·桌面级开发·qspinbox·微调框
月盈缺1 小时前
学习嵌入式的第四十一天——ARM——时钟与定时器
arm开发·学习
努力毕业的小土博^_^1 小时前
【深度学习|学习笔记】详细讲解一下 深度学习训练过程中 为什么 Momentum 可以加速训练?
人工智能·笔记·深度学习·学习·momentum
清风吹过1 小时前
少样本学习论文分享:多模态和类增量学习
论文阅读·人工智能·深度学习·学习·机器学习
Larry_Yanan1 小时前
QML学习笔记(十四)QML的自定义模块
开发语言·笔记·qt·学习·ui
wdfk_prog1 小时前
[Linux]学习笔记系列 -- lib/sort.c 通用的排序库(Generic Sorting Library) 为内核提供标准的、高效的排序功能
linux·运维·c语言·笔记·stm32·学习·bug
shark_dev2 小时前
C/C++ 指针详解与各种指针定义
c语言·c++
tpoog2 小时前
[C++项目组件]cpp-httplib与 websocketpp的简单介绍和使用
开发语言·c++