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

相关推荐
Code Slacker1 天前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
hssfscv1 天前
Javaweb 学习笔记——html+css
前端·笔记·学习
Mr.Jessy1 天前
JavaScript高级:深浅拷贝、异常处理、防抖及节流
开发语言·前端·javascript·学习
博客胡1 天前
Python-fastAPI的学习与使用
学习·fastapi·ai编程
HyperAI超神经1 天前
【Triton 教程】triton_language.load
人工智能·学习·大语言模型·cpu·gpu·编程语言·triton
知识分享小能手1 天前
Ubuntu入门学习教程,从入门到精通,Linux操作系统概述(1)
linux·学习·ubuntu
SHERlocked931 天前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
yuhaiqun19891 天前
Typora 技能进阶:从会写 Markdown 到玩转配置 + 插件高效学习笔记
经验分享·笔记·python·学习·学习方法·ai编程·markdown
tang&1 天前
哈希碰撞攻防战:C++闭散列与开散列实现全解析
c++·哈希算法
眠りたいです1 天前
现代C++:C++11并发支持库
开发语言·c++·多线程·c++11·c++并发支持库