1、C++98 中的 传统for 循环

  • 语法结构:这种形式的 for 循环由三个部分组成:初始化语句(int i = 0)、循环条件(i < 10)和迭代语句(i++)。通常用于遍历一个已知大小的循环范围。
  • 使用场景:适用于需要控制循环次数、迭代索引或在循环内修改循环变量的情况。
(1)传统for循环遍历普通元素或数组

  示例1:遍历普通元素

for (int i = 0; i < 3; i++) {cout << i << " ";
}

  示例2:使用传统的 for 循环遍历数组

#include <iostream>
using namespace std;int main() {// 使用传统的 for 循环遍历数组int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < size; i++) {cout << arr[i] << " ";}cout << endl;return 0;
}
(2)传统的 for 循环遍历vector 容器
  • 通过传统的 for 循环或者使用迭代器来遍历 vector 等容器。
  • 使用 vec[i] 可以访问元素,vec.begin()vec.end() 可以通过迭代器遍历容器中的元素。
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec = {1, 2, 3, 4, 5};// 使用传统的 for 循环访问 vector 元素for (int i = 0; i < vec.size(); i++) {cout << vec[i] << " ";  // 通过索引访问元素}cout << endl;// 使用迭代器遍历 vectorfor (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {cout << *it << " ";  // 通过迭代器访问元素}cout << endl;return 0;
}

2、C++11中的范围-based for 循环

C++11 引入了范围-based for 循环,这是一种更加简洁且易于使用的语法。该语法使得程序员无需手动管理索引或迭代器,便可直接遍历容器中的每个元素。

for (int i : 容器) {cout << i << " ";  // 自动遍历容器中的所有元素
}for (int i : vec) {cout << i << " ";  // 自动遍历容器中的元素
}
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec = {1, 2, 3, 4, 5};// 使用范围-based for 循环访问 vector 元素for (int i : vec) {cout << i << " ";  // 自动遍历容器中的元素}cout << endl;return 0;
}

在 C++11 中,程序员不再需要显式地声明索引或迭代器,而是通过范围-based for 循环直接遍历容器中的每一个元素。int i : vec 的语法简化了容器遍历的过程,并且使代码更加清晰。

3、主要区别 

特性范围-based for 循环传统 for 循环
语法简洁度非常简洁,自动遍历容器元素较为冗长,需要手动管理索引 i
适用性适用于容器遍历,尤其是不需要访问索引时适用于控制循环次数或需要访问索引时
支持版本C++11 及之后的版本C++98 及更早版本
是否支持修改容器元素可以修改元素(如果容器支持)可以修改元素
是否支持控制迭代条件不支持,自动遍历容器中的所有元素支持自定义控制循环的条件  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/86275.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/86275.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/86275.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubutun 操作

1.防火墙 Ubuntu 默认使用 ufw&#xff08;Uncomplicated Firewall&#xff09;作为其防火墙管理工具。ufw提供了一个用户友好的界面来配置和管理iptables防火墙。下面是一些基础的ufw命令&#xff0c;帮助你管理Ubuntu的防火墙。 1. 检查UFW状态 sudo ufw status 2. 启用UFW s…

麒麟V10操作系统离线安装Docker、Docker compose和1Panel

安装Docker 下载docker离线安装包&#xff0c;并上传到服务器 下载地址&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ 解压压缩包&#xff0c;并复制到指定目录 tar -xvf xxx.tgzcp docker/* /usr/bin/配置Docker服务&#xff0c;并赋予文件执行权限…

Java 与 MySQL 性能优化:MySQL性能指标解读与监控方法

文章目录 引言一、关键性能指标解读1. QPS&#xff08;Queries Per Second&#xff09;&#xff1a;每秒查询数2. TPS&#xff08;Transactions Per Second&#xff09;&#xff1a;每秒事务数3. 缓存命中率 二、性能监控工具介绍与使用1. SHOW STATUS2. Prometheus Grafana&a…

香橙派3B学习笔记13:deb 打包调用系统库与.so动态链接库的程序(部分失败)

之前接触到了snap打包自己的应用程序与依赖&#xff0c;但它的默认沙盒隔离的机制导致其访问系统库有局限性&#xff0c;它在访问硬件资源的时候没有的那些权限需要额外声明&#xff0c;不符合应用发布的便携性要求。 本文学习下如何用deb打包的方式打包自己需要调用系统库的程…

第二十届“开源中国开源世界”大会:openKylin AI创新实践与成果分享

2025年6月13日&#xff0c;第二十届“开源中国开源世界“大会在北京万寿宾馆隆重召开。本届大会由开源软件推进联盟&#xff08;COPU&#xff09;主办&#xff0c;以“共建人工智能时代的开源生态”为主题&#xff0c;汇聚来自全球开源与AI领域的专家学者、技术领袖与前沿企业&…

微算法科技开发基于布尔函数平方和表示形式的最优精确量子查询算法

随着量子计算的迅猛发展&#xff0c;精确量子查询算法的研究成为量子信息科学的一个重要课题。量子决策树算法&#xff0c;作为量子计算的核心&#xff0c;微算法科技&#xff08;NASDAQ:MLGO&#xff09;提出了一种新的方式来解决布尔函数查询问题。该框架从布尔函数的平方和表…

鸿蒙(HarmonyOS)布局系统详解:Flex、Grid、Stack等布局方式全面解析

在移动应用和分布式系统开发中&#xff0c;界面布局是构建优秀用户体验的基础。鸿蒙操作系统(HarmonyOS)作为华为推出的全场景分布式操作系统&#xff0c;提供了一套强大而灵活的布局系统。本文将全面解析鸿蒙的布局方式&#xff0c;包括Flex、Grid、Stack等核心布局技术&#…

【软件系统架构】系列四:嵌入式软件开发流程全解析(包含示例)

目录 一、需求分析阶段 二、系统架构设计阶段: 三、开发准备阶段 四、底层驱动开发阶段(HAL / BSP) 五、操作系统集成阶段(RTOS / OS) 六、中间件与协议栈集成阶段 七、应用逻辑开发阶段 八、调试与测试阶段: 九、集成与联调阶段 十、发布与维护阶段 总结:完…

接口自动化测试面试(高频面试常问)+答案

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、结合项目讲解项…

Kubernetes 从入门到精通-StatefulSet控制器

一、StatefulSet 基础概念 1. 与 Deployment 的关键区别 特性StatefulSetDeployment网络标识稳定的 DNS 名称随机生成存储每个 Pod 独立 PVC&#xff0c;数据持久化 共享存储或无状态启停顺序严格按序号顺序&#xff08;0→N-1 启动&#xff0c;N-1→0 停止&#xff09;并行适…

Redis ①②-事务

Redis 事务 先来看看 MySQL 事务的四大特性&#xff1a; 原子性&#xff1a;将事务里的多个操作打包成一个整体&#xff0c;要么全部成功&#xff0c;要么全部失败&#xff0c;失败后会进行回滚操作。一致性&#xff1a;确保事务执行前后&#xff0c;其数据的整体变化一致。隔…

Leetcode+JAVA+回溯

39.组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复…

嘉讯科技:医院电子病历系统的关键性作用

电子病历系统在现代医疗领域发挥着至关重要的作用。 电子病历系统极大地提高了医疗效率。以往&#xff0c;医生需要翻阅大量的纸质病历&#xff0c;耗费时间和精力去查找关键信息。而电子病历系统通过数字化的存储和检索方式&#xff0c;使得医生能够在短时间内获取患者的完整病…

解决 Docker 里 DrissionPage 无法连接浏览器的问题,内含直接可用的Docker镜像(DrissionPage 浏览器链接失败 怎么办?)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 报错现象与诊断 📒📑 源码🐞 DrissionPage 报错内容🐞 手动启动 Chrome 测试📒 原因分析与解决方案 📒🔍 为什么会这样?🔧 解决办法🔧 推荐方案🎯 测试🐳 可直接使用的Docker镜像 🐳📦 镜像下载地址…

Mysql 数据库中设备实时状态表水平分表

一、 需求概述 在使用 Mysql 数据库存储设备上报日志时&#xff0c;存在一张设备实时状态表&#xff0c;随着时间推移&#xff0c;数据量变得十分庞大。为了更好地管理和查询数据&#xff0c;提高数据库性能&#xff0c;需要对该表进行水平分表操作。同时&#xff0c;存在分页…

nginx的下载与安装 mac

1. 下载 方法一&#xff1a;本地下载 链接&#xff1a;https://nginx.org/en/download.html&#xff08;可直接搜官网&#xff09; 下载到本地后&#xff0c;上传到linux的某个文件夹中 方法二&#xff1a;直接linux上下载&#xff08;推荐&#xff09; wget -c http://ngi…

在 Mac 上配置 Charles,抓取 iOS 手机端接口请求

工具官网&#xff1a;https://www.charlesproxy.com/ Charles 激活码 一、简介 Charles 是一款强大的网络抓包工具&#xff0c;支持 HTTP 和 HTTPS 协议&#xff0c;适用于调试手机 App、微信小程序、H5 页面等网络请求。 它能作为代理服务器&#xff0c;转发并记录本机及其他…

较大项目 git(gitee, github) 拉取失败解决方法

问题描述 近期遇到了一个拉取一个比较大项目失败的问题&#xff0c;229M这么大 每次都失败 我在自己的PC上&#xff0c;只有极好的环境才能拉取&#xff0c;笔记本办公热点怎么都不行 解决办法 后面通过https链接 首次会报错&#xff0c;因为我输入错了gitee的username&am…

爬虫中网络知识基础

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是互联网上用于传输网页内容等数据的两种主要协议&#xff0c;以下是它们的定义和基本工作原理&#xff1a; HTTP 定义 &#xff1a;HTTP 是一种…

安全工具-二进制安全-testssl.sh

1 需求 --openssl <PATH> &#xff1a;use this openssl binary (default: look in $PATH, $RUN_DIR of testssl.sh) --quiet&#xff1a;dont output the banner. By doing this you acknowledge usage terms normally appearing in the banner --severity <severity…