特殊的C++vector容器迭代器失效情况:vector iterator not incrementable

众所周知,容器删除元素会使当前使用的迭代器失效,除了重新分配迭代器,还可以使用下面的写法,使删除元素时重新赋值一个有效的迭代器


for(auto iter = v->begin();iter!=v->end();){if(...){//判断条件iter = v->erase(iter);//使用erase返回的迭代器重新赋值iter}else{iter++;}
}

但是我在一个程序中使用了正确写法,还是遇到了vector iterator not incrementable这个崩溃提示
原因就是我使用了嵌套的迭代器循环,大概的代码如下

void func(){for(auto iter = v->begin();iter!=v->end();){if(...){//判断条件iter = v->erase(iter);//使用erase返回的迭代器重新赋值iter}else{iter++;}}
}
void funb(){for(auto iter = v->begin();iter!=v->end();){if(...){//判断条件func();}}
}

这导致func里面是正常的迭代器循环,正常的删除了元素,而回到funb里面容器被改变了,导致迭代器失效!

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

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

相关文章

X210 Linux开发板挂载NFS文件系统

软件版本 VirtualBox v7.0、Ubuntu 20.04.3 LTS 网络搭建 采用“路由器”“有线网”来将Linux开发板和Ubuntu虚拟机连接在同一个局域网中。具体接线如下: Linux开发板通过网线直接连接到“路由器”的LAN接口上,然后笔记本电脑通过Wifi与路由器连接。…

burpsuite模块介绍之dashboard(仪表板)

导语 "Dashboard主要分为三块:任务、事件日志和动态问题发现" 任务(Tasks):在这个模块中,你可以创建和管理不同类型的任务。其中包括两个预设模板: "来自代理(所有流量)的被动抓取"(live passive crawl from proxy (all traffic)):该任务模板…

纯CSS的华为充电动画,它来了

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 Krpano专栏:想学Krpano的,冲 &#x1f514…

location常用属性和方法

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在在JavaScript中location常用属性和方法以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可…

MySql 第三方工具SQL Sugar

MySQL 是一个非常流行和强大的开源关系数据库管理系统。由于其开源性质,许多第三方工具和库被开发出来,以帮助用户更有效地使用 MySQL。这些第三方工具提供了各种功能,包括数据库管理、SQL 查询生成和优化、备份和恢复等。在这篇博客中&#…

vol----学习随记!!!

目录 一、代码生成1.先新建一个功能的对应的代码配置各项解释: 2.后设置配置菜单3.再点保存,生成vue页面,生成model,生成业务类4.再通过菜单设置编写系统菜单 一、代码生成 1.先新建一个功能的对应的代码配置 各项解释&#xff…

二手房交易流程及避坑指南

文章目录 一、写作目的二、主要流程1、查档2、签定金合同3、网签4、交首付5、解押过户6、出产证7、拿房款8、交房 一、写作目的 近几个月房价一直跌跌不休,对于投资客来说这段时间肯定不好过,但这段时间也正是置换房子的好时候,在这次的房产…

Go语言中支持的internal目录配置与组织内私网包配置详解

Go 中的内部包 这里可能会有歧义 可能是 Go 的 internal 目录中的包也可能是指内部开发的包 函数和变量的可见性 对于函数和变量而言,有如下规则:1 )小写字母开头的函数变量结构体只能在本包内访问2 )大写字母开头的函数变量结…

移动应用开发:揭秘内侧APP封装台的高效

在数字化浪席卷下,移应用已经成连接企业与用户纽带。为了抢占市场先机,快速发布高质量的移动应用成为业竞争的关键。侧APP封装平因此而诞生,成为了应开发者的得助手。以下是内侧APP封装台的全面解读,助在应用开发海洋中乘风破浪。…

基于CMake的大型C++工程组织

此文适合大型C工程,涉及到多个自定义库,多个第三方库,以及还有给第三方用户进行二次开发的需求下,应对这种复杂编译环境下的工程组织方式的一些经验介绍,希望给大型工业软件的开发者一些参考 一个大型工程&#xff0c…

【JavaFX】JDK11 基于Gson、hutool、Jackson持久化存储实体类数据的解决方案 (读取、追加、去重json对象)

文章目录 开发环境效果前言一、Gson是什么?二、使用步骤1.引入依赖2.创建实体类创建 JsonFileService类创建JsonFileService的实现类 JsonFileServiceImpl三、实现效果开发环境 JDK11IDEA 2023.3Gson、hutool、JacksonJavaFX 11效果 前言 使用JDK1

【每日一题】【12.29】 - 【12.31】年终收尾

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 这三天的题目难度相对较小,基本都为模拟题,但是第二三的题目年份贡献类型很有代表性。2023年最后三天年终收…

MongoDB 数据类型

目录 BSON 类型 二进制数据(Binary Data) ObjectId ObjectId定义 文档中的ObjectId ObjectId的单调性 字符串(String) 时间戳(Timestamps) 日期(Date) BSON类型的排序 数…

I/O多路复用

I/O就是对缓冲区的操作 I/O多路复用使得程序能同时监听多个文件描述符能够提高程序的性能 I/O多路复用是一种有效的处理多个I/O事件的机制,允许一个单独的进程或线程来监视多个文件描述符(sockets、文件、设备等),并在其中任何一个…

Python编程技巧 – format格式化文本

Python编程技巧 – format格式化文本 Python Programming Essentials - Using format() to format texts By JacksonML 本文简要介绍Python语言的format()方法(也即函数)相关实例和技巧,希望对读者有所帮助。 1. format定义和方法 forma…

如何处理并下载Sentinel-5数据

SENTINEL-5是欧洲空间局(European Space Agency,ESA)Copernicus计划中的一颗地球观测卫星。SENTINEL-5的主要任务是监测大气成分,特别是臭氧、氮二氧化物、二氧化硫、甲烷和其他气体的分布。这些观测对于了解大气污染、气候变化和…

php接口优化 使用curl_multi_init批量请求

PHP使用CURL同时抓取多个URL地址 抓取多个URL地址是Web开发中常见的需求,使用PHP的curl库可以简化这个过程。本文将详细介绍如何使用PHP的curl库同时请求多个URL地址,并提供具体的代码案例和注释。 curl库介绍 curl是一个常用的开源网络传输工具&…

图像分割实战-系列教程5:unet医学细胞分割实战3(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 上篇内容: unet医学细胞分割实战2 下篇内容: unet医学细胞分割实战4 5、损…

《Linux详解:深入探讨计算机基础》

《Linux详解:深入探讨计算机基础》 引言: 在计算机科学领域,操作系统是一个至关重要的概念,而Linux作为一种开源的Unix-like操作系统,不仅在服务器领域广泛应用,也在嵌入式系统、超级计算机等多个领域发挥…

Hermite矩阵

Hermite矩阵 文章目录 Hermite矩阵一、正规矩阵【定义】A^H^矩阵【定理】 A^H^的运算性质【定义】正规矩阵、特殊的正规矩阵【定理】与正规矩阵酉相似的矩阵也是正规矩阵【定理】正规的上(下)三角矩阵必为对角矩阵【定义】复向量的内积【定理】Schmitt正交化 二、酉矩阵&#x…