[C++]vector:迭代器失效和vector<string>中更深层次拷贝的问题

ops/2024/11/26 10:44:24/

迭代器失效

  • 一、迭代器失效的两大类型
    • 异地扩容后的失效
    • 原地删除后的失效
  • 二、vector<string>出现的深层次拷贝问题

一、迭代器失效的两大类型

异地扩容后的失效

  • 在vector容器中,通常情况下的扩容都是异地扩容,例如resize, reserve,但是这个行为不会改变迭代器指向的位置,因此直接异地扩容会导致迭代器的失效

原地删除后的失效

  • 如果是原地删除,例如erase:erase的逻辑是删除某一个数的位置,让这个数往后的位置都往前挪一个位置,这种行为看起来迭代器貌似没有失效,但:
    如果删除的是最后一个位置,那么:

    在vs平台下,如果不接受erase后返回的值,将会强制检查强制报错
    在linux平台下,编译器不会报错,但是这种行为一是会留下安全隐患(越界问题),二是没有可移植性

二、vector出现的深层次拷贝问题

如图:我们扩容了一个vector<string>类型的对象
但是可以看到,新的对象的string类型。指向的是原对象的string类型的值,这是属于浅拷贝的问题

  • 解决方法是:
	for(size_t = 0; i < size(); i++){tmp[i] = _start[i]; 这里使用自定义类型的赋值(深拷贝赋值)就算是内置类型,也可以一样赋值}

http://www.ppmy.cn/ops/136813.html

相关文章

文件分片上传

分片上传&#xff1a; 1、前端&#xff08;vue2elementui&#xff09; <template><div><el-upload:http-request"handleUpload":before-upload"beforeUpload"multiple:auto-upload"false":on-change"handleFileChange&quo…

react项目初始化配置步骤

1.npx create-react-app 项目名称 vue项目同理 2.去编辑器市场安装所需插件&#xff0c;例如ESlint以及Prettier-Code formatter formatiing-toggle 3.在项目中安装 ESLint 和 Prettier 及相关插件&#xff1a; 3.1&#xff1a; npm install --save-dev eslint prettier 3.2…

非递归遍历二叉树(数据结构)

我的博客主页 非递归遍历二叉树 前序遍历&#xff08;迭代&#xff09;中序遍历&#xff08;迭代&#xff09;后续遍历&#xff08;迭代&#xff09; 二叉树的遍历方式有&#xff1a;前序遍历、中序遍历、后续遍历&#xff0c;层序遍历&#xff0c;而树的大部分情况下都是通过递…

使用 Python 的 pdfplumber 库高效解析 PDF 文件

使用 Python 的 pdfplumber 库高效解析 PDF 文件 PDF 文件是日常办公和数据处理中常见的文件格式&#xff0c;而 pdfplumber 是一个专为 PDF 文件解析设计的 Python 库&#xff0c;可以轻松提取文本、表格、图像等内容。本文将介绍 pdfplumber 的基本功能、使用方法&#xff0…

计算机网络谢希仁第七章课后题【背诵版本】

目录 【7-01】计算机网络都面临哪几种威胁?主动攻击和被动攻击的区别是什么?对于计算机网络的安全措施都有哪些? 【7-02】 试解释以下名词:(2)拒绝服务;(3)访问控制;(4)流量分析;(5)恶意程序。 【7-03】为什么说&#xff0c;计算机网络的安全不仅仅局限于保密性?试举例说…

openssl创建自签名证书

原文地址&#xff1a;自签名证书 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 1 生成私钥 openssl genrsa -out server.key 2048 2 创建证书请求文件 openssl req -new -key server.key -out server.csr 3 用私钥和证书请求文件&#xf…

opencv读写文件操作

读取图像文件 OpenCV 中使用cv2.imread()函数来读取图像文件。这个函数的第一个参数是图像文件的路径&#xff0c;第二个参数是一个可选的标志&#xff0c;用于指定读取图像的方式。示例代码&#xff1a; import cv2 # 以彩色模式读取图像&#xff08;这是默认模式&#xff09…

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…