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

相关推荐
沐怡旸11 分钟前
【底层机制】右值引用是什么?为什么要引入右值引用?
c++·面试
scx201310041 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷
CYRUS_STUDIO1 小时前
LLVM 不止能编译!自定义 Pass + 定制 clang 实现函数名加密
c语言·c++·llvm
CYRUS_STUDIO1 小时前
OLLVM 移植 LLVM 18 实战,轻松实现 C&C++ 代码混淆
c语言·c++·llvm
落羽的落羽1 小时前
【C++】简单介绍lambda表达式
c++·学习
Dovis(誓平步青云)1 小时前
《探索C++11:现代语法的内存管理优化“性能指针”(下篇)》
开发语言·jvm·c++
charlie1145141912 小时前
前端三件套简单学习:HTML篇1
开发语言·前端·学习·html
我命由我123452 小时前
Photoshop - Photoshop 创建图层蒙版
运维·学习·ui·课程设计·设计·ps·美工
我登哥MVP2 小时前
Java 网络编程学习笔记
java·网络·学习
小欣加油2 小时前
leetcode 912 排序数组(归并排序)
数据结构·c++·算法·leetcode·排序算法