当前位置: 首页 > news >正文

c++ - 在循环中使用迭代器删除 unordered_set 中的元素

标签 c++ unordered-set

请考虑以下代码:

Class MyClass 为自定义类:class MyClass
{
public:MyClass(int v) : Val(v) {}int Val;
};

然后下面的代码将在调用 it = T.erase(it); 之后在循环中导致 Debug Assertion Failed:

unordered_set<MyClass*> T;
unordered_set<MyClass*>::iterator it;for (int i=0; i<10; i++)T.insert(new MyClass(i));for (it = T.begin(); it != T.end(); it++)
{if ( (*it)->Val == 5 )it = T.erase(it); // After this line executes, in the next loop, the error occurs.
}

如何解决,为什么? PS:我的环境:VS2010

最佳答案:

假设最后一个元素的 Val = 5。
it = T.erase(it) 被调用,it 被设置为 T.end()。
然后 it++ 被调用,这会导致错误,因为 it 已经设置为结束。
本质上…当您删除当前代码中的一个元素时,您最终会双倍推进迭代器。

你可以改用这样的东西:

for (it = T.begin(); it != T.end(); (*it)->Val == 5? it = T.erase(it) : ++it);

我通常是这样做的:

for (auto it = T.begin(); it != T.end(); )
{if ((*it)->value == 5) it = T.erase(it);else ++it;
}

如果擦除条件变得更复杂,这可能会提高可读性。

关于c++ - 在循环中使用迭代器删除 unordered_set 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252386/

相关文章:

c++ - 在循环中使用迭代器删除 unordered_set 中的元素

标签 c unordered-set 请考虑以下代码: Class MyClass 为自定义类:class MyClass { public:MyClass(int v) : Val(v) {}int Val; };然后下面的代码将在调用 it T.erase(it); 之后在循环中导致 Debug Assertion Failed: unordered_set<MyClass*> T; unordered_set<…...

深入了解哈希映射(HashMap)

一、哈希映射&#xff08;HashMap&#xff09;简介 在计算机科学中&#xff0c;哈希映射&#xff08;HashMap&#xff09;是一种基于键值对&#xff08;Key-Value pair&#xff09;存储数据的数据结构&#xff0c;它提供了高效的数据查找、插入和删除操作。哈希映射的核心思想…...

Public Key Retrieval is not allowed

Public Key Retrieval is not allowed 最近使用 JDBC 连接 MySQL 频繁出现如下报错&#xff1a; java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe 这段代码是一个 Java 异常错误信息&#xff0c;其中包含了以下关键信息&#xff1a; 错误类…...

iphone进入恢复模式怎么退出?分享2种退出办法!

iPhone手机莫名其妙的进入到了恢复模式&#xff0c;或者是某些原因需要手机进入恢复模式&#xff0c;但是之后我们不知道如何退出恢复模式怎么办&#xff1f; 通常iPhone进入恢复模式的常见原因主要是软件问题、系统升级失败、误操作问题等导致。那iphone进入恢复模式怎么退出&…...

Leetcode 107:二叉树的层次遍历II

给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09;。 思路&#xff1a;翻转title102的结果即可。 //层次遍历二叉树public static List<List<Integ…...

LNMP一键安装包

LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…...

[机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…...

多线程的情况下 AopContext.currentProxy()切面代理失效问题

多线程的情况下 AopContext.currentProxy()切面代理失效问题 在多线程环境下&#xff0c;AopContext.currentProxy() 可能会遇到问题&#xff0c;特别是在某些情况下&#xff0c;它无法正确地获取到当前线程的代理对象。这通常发生在以下几种情况&#xff1a; 线程不是由Spri…...

https://是怎么实现的?

默认的网站建设好后都是http访问模式&#xff0c;这种模式对于纯内容类型的网站来说&#xff0c;没有什么问题&#xff0c;但如果受到中间网络劫持会让网站轻易的跳转钓鱼网站&#xff0c;为避免这种情况下发生&#xff0c;所以传统的网站改为https协议&#xff0c;这种协议自己…...

Linux无root配置Node,安装nvm

1. 安装NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 或者&#xff0c;如果你使用wget wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 对于bash用户&#xff0c;可以运行&…...

蛋糕店做配送小程序的作用是什么

蛋糕烘焙除了生日需要&#xff0c;对喜吃之人来说往往复购率较高&#xff0c;除线下实体店经营外&#xff0c;更多的商家选择线上多种方式获客转化、持续提高生意营收&#xff0c;而除了进驻第三方平台外&#xff0c;构建品牌私域自营店铺也同样重要。 运用【雨科】平台搭建蛋…...

重写muduo之TcpServer

目录 1、Callbacks.h 2、TcpServer.h 3、TcpServer.cc 1、Callbacks.h 回调操作 #pragma once#include <memory> #include <functional>class Buffer; class TcpConnection;using TcpConnectionPtrstd::shared_ptr<TcpConnection>; using ConnectionCall…...

腾讯云服务器之ssh远程连接登录及转发映射端口实现内网穿透(实现服务器访问本地电脑端口)

目录 一、创建密钥绑定实例二、设置私钥权限三、ssh远程连接到服务器四、修改root密码五、端口转发&#xff08;实现服务器访问本地电脑的端口&#xff09; 一、创建密钥绑定实例 创建密钥会自动下载一个私钥&#xff0c;把这个私钥复制到c盘 二、设置私钥权限 1、删除所有用户…...

oracle 9i 行头带有scn的表

oracle 9i 行头带有scn的表 conn scott/tiger drop table t1; drop table t2; create table t1(c varchar2(5)); create table t2(c varchar2(6)) ROWDEPENDENCIES; --t2表每行都有scn,会增加六个字节的开销 alter table t1 pctfree 0; alter table t2 pctfree 0; insert in…...

MySql#MySql安装和配置

目录 一、卸载不需要的环境 二、安装mysql yum 源 三、开始安装 四、如果保证安装成功呢&#xff1f; 五、MySql 启动&#xff01; 六、登录mysql 七、配置文件说明 八、设置开机启动&#xff01; 本次安装是在Linux环境在centos7中完成 首先先将自己切换成root 一、…...

WEB前端复习——HTML

固定格式&#xff1a;开头<!DOCTYPE html> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>标…...

Java医院绩效管理应用系统源码java+ maven+ avue 公立医院绩效考核管理系统源码 支持二开

Java医院绩效管理应用系统源码java maven avue 公立医院绩效考核管理系统源码 支持二开 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求&#xff0c;以“工作量为基础的考核方案”为核心思想&#xff0c;结合患者满意度、服务质量、技术难度、工作效率、医德医风…...

湖南知识付费系统开发公司,教育机构如何提高转化率?有哪些途径?

教育行业必须线上线下一起抓。当下教育机构不得不考虑线上招生、线上教学和服务。但是大多数人&#xff1a;没思路、没人才&#xff0c;不知道如何下手?其实线上运营也没那么难&#xff0c;“危机”即“机遇”。教育机构如何提高转化率&#xff1f;有哪些途径&#xff1f; 一、…...

Goland GC

Goland GC 引用Go 1.3 mark and sweep 标记法Go 1.5 三色标记法屏障机制插入屏障删除写屏障总结 Go 1.8 混合写屏障(hybrid write barrier)机制总结 引用 https://zhuanlan.zhihu.com/p/675127867 Garbage Collection&#xff0c;缩写为GC&#xff0c;一种内存管理回收的机制…...

【SRC实战】合成类小游戏外挂漏洞

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合” 合成类小游戏三个特点&#xff1a; 1、一关比一关难&#xff0c;可以参考“羊了个羊” 2、无限关卡无限奖励&#xff0c;可以参考“消灭星星…...

Wi-Fi/5G信号解码背后的数学:深入浅出图解LLR软解调原理

Wi-Fi/5G信号解码背后的数学&#xff1a;深入浅出图解LLR软解调原理 在数字通信的世界里&#xff0c;信号从发射端到接收端的旅程就像一场充满干扰的马拉松。当你的手机接收Wi-Fi或5G信号时&#xff0c;它获取的并不是完美的0和1序列&#xff0c;而是被噪声扭曲的"模糊版本…...

Perplexity文化新闻搜索效率翻倍:从冷启动到高信噪比输出的7个被低估的底层参数配置

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity文化新闻搜索效率翻倍&#xff1a;从冷启动到高信噪比输出的7个被低估的底层参数配置 Perplexity 的文化新闻检索能力并非仅由模型规模或训练数据量决定&#xff0c;其真实效能高度依赖于七个常被忽…...

Ollama 进阶:如何给本地大模型投喂你公司的测试文档?

——2026年企业级RAG知识库搭建全指南 写在前面:一个测试团队的真实痛点 上个月,一位测试团队负责人在交流群里发了这么一段话: “我们团队累积了大概3万+份测试用例、2000多份测试报告和无数迭代过程中留下的缺陷记录。每次新人入职,至少要花两周时间翻阅历史文档;每次…...

终极Android虚拟定位指南:无需Root,让你的手机“瞬间移动“到世界任何角落!

终极Android虚拟定位指南&#xff1a;无需Root&#xff0c;让你的手机"瞬间移动"到世界任何角落&#xff01; 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 想象一下&…...

哨兵1号数据处理必备:如何搞定精密轨道文件和SRTM DEM数据(最新可用链接)

哨兵1号数据处理实战&#xff1a;精密轨道与SRTM DEM数据获取全指南 对于从事InSAR或时序分析的遥感研究者而言&#xff0c;数据预处理阶段的轨道校正和地形相位去除是决定成果精度的关键步骤。本文将聚焦哨兵1号SAR数据处理中最核心的两类辅助数据——精密轨道文件和SRTM DEM&…...

负载锌酞菁(ZnPc)/α-萘酚温敏水凝胶,ZnPc/α-Naphthol

名称&#xff1a;负载锌酞菁&#xff08;ZnPc&#xff09;/α-萘酚温敏水凝胶&#xff0c;ZnPc/α-Naphthol 一、材料概览&#xff1a;双重功能的精妙融合 负载锌酞菁&#xff08;ZnPc&#xff09;/α-萘酚温敏水凝胶&#xff0c;是将具有优异光催化活性的锌酞菁&#xff08;Zn…...

Whisky深度评测:如何在Apple Silicon Mac上构建Windows应用运行沙箱

Whisky深度评测&#xff1a;如何在Apple Silicon Mac上构建Windows应用运行沙箱 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 随着Apple Silicon芯片在Mac产品线中的全面普及&…...

用NE555和立创EDA做个会‘叮咚’的门铃:从原理图到PCB打板的完整DIY记录

从零打造NE555叮咚门铃&#xff1a;立创EDA全流程实战指南 当电子爱好者第一次尝试将电路图转化为实物时&#xff0c;往往会面临软件操作、元件选型和生产对接的多重挑战。本文将以经典NE555叮咚门铃为例&#xff0c;手把手演示如何用立创EDA完成从原理图设计到PCB打板的完整流…...

手把手教你用Vector CANape创建第一个AUTOSAR ECU测量工程(附A2L文件配置避坑点)

从零构建AUTOSAR ECU测量工程&#xff1a;Vector CANape实战指南与A2L文件深度解析 在汽车电子开发领域&#xff0c;ECU数据测量与标定是功能验证和性能优化不可或缺的环节。作为Vector工具链中的核心组件&#xff0c;CANape凭借其强大的实时数据采集和分析能力&#xff0c;已成…...

RK3588/RK3568嵌入式开发:从通用镜像到定制分区镜像的完整实践指南

1. 项目概述&#xff1a;从“通用”到“专属”的镜像进化最近在折腾RK3588和RK3568平台时&#xff0c;我发现了一个挺有意思的升级点&#xff1a;开发板和核心板的镜像支持定制分区了。这听起来可能有点技术化&#xff0c;但说白了&#xff0c;就是以前我们拿到的系统镜像&…...