【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语句进行循环结构的编写时,尽量避免添加或者删除其中的元素。

相关推荐
M78佐菲3 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
恋恋西风3 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
Brilliantwxx3 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BizzZ_4 小时前
C++(22)——类型转换和IO流
开发语言·c++
yi.Ist4 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
青梅味猪大肠6 小时前
【深入浅出C++】为什么虚表指针可以解决菱形继承
开发语言·c++
Lhan.zzZ7 小时前
QML 组件库:VS2022 + Qt 静态库方案
开发语言·c++·qt·visual studio
骐骥17 小时前
学习:javaScriptProxy和registerJavaScriptProxy有什么区别,能注册多少个对象
学习·鸿蒙
Huathy-雨落江南,浮生若梦7 小时前
Caddy 学习笔记 - 反向代理与 IP 封禁
笔记·学习·tcp/ip
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(57):MemSearch-o1——从查询词元生长证据,重组 Deep Search 记忆路径
论文阅读·人工智能·学习·开源·github