【C++基础知识——迭代器 引入】

问题引入

#include <iostream>
#include <map>
#include <string>int main() {// 定义一个 std::map 容器std::map<std::string, int> ageMap;ageMap["Alice"] = 30;ageMap["Bob"] = 25;ageMap["Charlie"] = 35;// 使用迭代器遍历并修改容器中的元素for (auto it = ageMap.begin(); it != ageMap.end(); ++it) {std::cout << it->first << " is " << it->second << " years old." << std::endl;// 修改元素的值it->second += 1;}std::cout << "After incrementing ages:" << std::endl;// 再次使用迭代器遍历容器,打印修改后的值for (auto it = ageMap.begin(); it != ageMap.end(); ++it) {std::cout << it->first << " is now " << it->second << " years old." << std::endl;}return 0;
}

输出结果:

Alice is 30 years old.
Bob is 25 years old.
Charlie is 35 years old.
After incrementing ages:
Alice is now 31 years old.
Bob is now 26 years old.
Charlie is now 36 years old.

**问题**:这里的it 到底是引用还是拷贝?如果是拷贝,为什么对于拷贝的内容设置了之后会生效?

问题回答

  • 在这个函数中,it 是一个迭代器,不是引用也不是拷贝。迭代器本身是一个轻量级对象,通常包含指向容器元素的指针或类似的结构。通过迭代器访问和修改容器中的元素是有效的。

  • 迭代器是指向容器元素的指针或类似结构,通过迭代器可以访问和修改容器中的元素。因此,it 不是对元素的拷贝,而是指向元素的一个指针或类似结构。通过迭代器修改元素是有效的,修改会反映在原始容器中。

代码解释

  1. 定义 std::map 容器:

    • std::map<std::string, int> ageMap; 定义一个 std::map 容器,键为 std::string 类型,值为 int 类型。
    • ageMap[“Alice”] = 30; 等语句向容器中插入元素。
  2. 使用迭代器遍历并修改容器中的元素:

    • for (auto it = ageMap.begin(); it != ageMap.end(); ++it) 使用迭代器遍历 ageMap 容器。
    • std::cout << it->first << " is " << it->second << " years old." << std::endl; 打印每个元素的键和值。
    • it->second += 1; 修改每个元素的值,将年龄加 1。
  3. 再次使用迭代器遍历容器,打印修改后的值:

    • 再次使用迭代器遍历 ageMap 容器,打印修改后的值。

总结

it 是一个迭代器,不是引用也不是拷贝。通过迭代器 it 修改容器中的元素是有效的,修改会反映在原始容器。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智能感知,主动防御:移动云态势感知为政企安全护航

数字化时代&#xff0c;网络安全已成为企业持续运营和发展的重要基石。随着业务扩展&#xff0c;企业资产的数量急剧增加&#xff0c;且分布日益分散&#xff0c;如何全面、准确地掌握和管理资产成为众多政企单位的难题。同时&#xff0c;传统安全手段又难以有效应对新型、隐蔽…

你的提交信息还在拖后腿?看这里,提升代码质量的绝招!

文章目录 前言一、什么是约定式提交&#xff1f;二、创建新仓库三、将代码推送到远程仓库的步骤1.检查当前远程仓库2.添加代码到暂存区3. 进行约定式提交4. 推送代码到远程仓库5. 完成推送 总结 前言 在当今软件开发领域&#xff0c;Git已经成为最广泛使用的版本控制系统之一。…

二阶滤波算法总结(对RC滤波算法整理的部分修正和完善)

文章目录 1、一阶低通滤波2、一阶高通滤波3、二阶低通滤波器3.1 二阶RC低通滤波器的连续域数学模型3.2 二阶RC低通滤波器的算法推导3.3 matlab仿真 4、二阶高通滤波器4.1 二阶RC高通滤波器的连续域数学模型4.2 二阶RC高通滤波器的算法推导4.3 matlab仿真 5、陷波滤波6、带通滤波…

白杨SEO:从小红书、抖音图文再到小绿书,为什么现在制作图文内容搞SEO搜索精准流量更容易?

前言&#xff1a;为什么想到写这个&#xff1f;上周参加了一个杭州公司游学&#xff0c;发现大家现在做SEO精准流量都在用图文方式来搞了&#xff0c;还有做小绿书也越来越多了&#xff0c;所以分享给大家&#xff0c;看完对大家有一些启发。 文章大纲&#xff1a; 1、图文是什…

2024年AI技术爆发的元年,用对工具,让你副业比主业赚得多!

大家好&#xff0c;我是强哥 文字的力量不容小觑&#xff0c;或许你没有多好的文笔&#xff0c;或许你已经很久没有拿笔写字了&#xff0c;但是没关系&#xff0c;我们有工具&#xff01; AI时代的到来&#xff0c;不会用工具&#xff0c;那你可就OUT了 如果你觉得文字不能赚…

产业报告丨2024中国AI大模型场景探索及产业应用调研报告(附下载)

前言 AI大模型是指在机器学习和深度学习领域中&#xff0c;采用大规模参数&#xff08;至少在一亿个参数以上&#xff09;的神经网络模型&#xff0c;AI大模型在训练过程中需要依赖大量的算力和高质量的数据资源。2024年&#xff0c;AI大模型的行业应用与技术发展正有效提升千…

2024年 AI大模型我该买一张什么卡?

有钱啥也不用说&#xff0c;买张最贵的就是了。对囊中羞涩的我还说&#xff0c;我该买张什么样的显卡呢&#xff1f; 我的旧显卡RTX1060 6G&#xff0c;满负荷消耗功率110多瓦&#xff0c;几乎达到设计最大TDP&#xff0c;周日时拿了朋友的RTX3060Ti 8G&#xff0c;发现是锁算…

Kaggle-狗种类的识别(Pytorch框架)基本图像识别流程

狗类别实现过程 一. 将数据集按标签分类&#xff0c;将标签转换为数字表示&#xff0c;并制作数据集 二. 搭建网络框架&#xff0c;inception&#xff0c;或者ResNet 三. 选择优化函数&#xff0c;训练模型 数据集制作 首先分析数据集&#xff0c;题中已经很明确告诉有120 种…

【2024W32】肖恩技术周刊(第 10 期):太阳神鸟

周刊内容: 对一周内阅读的资讯或技术内容精品&#xff08;个人向&#xff09;进行总结&#xff0c;分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率&#xff0c;每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

LeetCode 刷题基础Ⅰ -- 基础语法

c 基础语法&#xff0c;LeetCode 刷题用 学习网站一、顺序结构基本数据类型① 整型 int② 长整型 long③ 浮点型 double④类型转换 输入输出① getchar 吸收回车符② 数学函数③ 最大值的定义 二、选择结构① switch 三、数组① 初始化② 输入③ 方法 四、结构体① 自定义结构体…

UE5地图白屏/过曝/非常亮の解决方法

今天遇到一个问题 , 新建项目 , 打开虚幻第三人称地图的默认关卡 , 发现白屏 , 啥也看不见 猜测可能是虚幻编辑器的bug , 造成白屏的原因应该是场景过曝了 记录一下解决方案 第一种解决方法 找到场景中的 后期处理体积 (PostProcessVolume) 直接删掉 或者找到 细节面板中 -…

【Transformers基础入门篇5】基础组件之Datasets

文章目录 一、简介二、Datasets基本使用2.1 加载在线数据集&#xff08;load_dataset&#xff09;2.2 加载数据集某一项任务&#xff08;load_dataset&#xff09;2.3 按照数据集划分进行加载&#xff08;load_dataset&#xff09;2.4 查看数据集&#xff08;index and slice&a…

数据库课程 CMU15-445 2023 Fall Project-2 Extendible Hash Index

0 实验结果 tips:完成项目的前提不需要一定看视频 1 数据结构&#xff1a;扩展哈希 解释下这张图&#xff1a; 图中header的最大深度2&#xff0c;directory最大深度2&#xff0c;桶的容量2。 最开始的时候只有一个header。 插入第一个数据&#xff0c;假设这个数据对应的哈希…

洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!

在《洛汗2》中&#xff0c;玩家将进入一个充满魔幻色彩的西方世界&#xff0c;体验多种族文明的兴衰与冒险。为了更好地享受这款由普雷威&#xff08;Playwith&#xff09;开发的角色扮演动作手游&#xff0c;使用VMOS云手机将是一个明智的选择。VMOS云手机专为游戏打造了定制版…

基于SSM的“在线CRM管理系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“在线CRM管理系统”的设计与实现&#xff08;源码数据库文档开题报告) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 总体功能模块图 登录页面 后台管理页面 产品信息页面 客…

JSP(Java Server Pages)基础使用二

简单练习在jsp页面上输出出乘法口诀表 既然大家都是来看这种代码的人了&#xff0c;那么这种输出乘法口诀表的这种简单算法肯定是难不住大家了&#xff0c;所以这次主要是来说jsp的使用格式问题。 <%--Created by IntelliJ IDEA.User: ***Date: 2024/7/18Time: 11:26To ch…

consul注册中心与容器自动发现实战

consul简介 Consul 是 HashiCorp 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案&#xff0c;不再需要依赖其它工具&#xff08;比如 ZooKeeper 等&#xff0…

拾色器的取色的演示

前言 今天&#xff0c;有一个新新的程序员问我&#xff0c;如何确定图片中我们需要选定的颜色范围。一开始&#xff0c;我感到对这个问题很不屑。后来&#xff0c;想了想&#xff0c;还是对她说&#xff0c;你可以参考一下“拾色器”。 后来&#xff0c;我想关于拾色器&#…

动态规划11,完全背包模板

NC309 完全背包 问题一&#xff1a;求这个背包至多能装多大价值的物品&#xff1f; 状态表示&#xff1a;经验题目要求 dp[i][j] 表示 从前i个物品中挑选&#xff0c;总体积不超过j&#xff0c;所有选法中&#xff0c;能选出来的最大价值。 状态转移方程 根据最后一步的状态&a…

C语言 typedef - C语言零基础入门教程

目录 一.typedef 简介 二.typedef 实战 1.typedef 定义基本数据变量 2.typedef 定义结构体 A.常规定义结构体B.typedef 定义结构体C.结构体使用 typedef 和不使用 typedef 区别 3.typedef 定义函数指针 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础…