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)
一、哈希映射(HashMap)简介 在计算机科学中,哈希映射(HashMap)是一种基于键值对(Key-Value pair)存储数据的数据结构,它提供了高效的数据查找、插入和删除操作。哈希映射的核心思想…...

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

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

Leetcode 107:二叉树的层次遍历II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。 思路:翻转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最新】
🎩 欢迎来到技术探索的奇幻世界👨💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...

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

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

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

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

重写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密码五、端口转发(实现服务器访问本地电脑的端口) 一、创建密钥绑定实例 创建密钥会自动下载一个私钥,把这个私钥复制到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 源 三、开始安装 四、如果保证安装成功呢? 五、MySql 启动! 六、登录mysql 七、配置文件说明 八、设置开机启动! 本次安装是在Linux环境在centos7中完成 首先先将自己切换成root 一、…...

WEB前端复习——HTML
固定格式:开头<!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 公立医院绩效考核管理系统源码 支持二开 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风…...

湖南知识付费系统开发公司,教育机构如何提高转化率?有哪些途径?
教育行业必须线上线下一起抓。当下教育机构不得不考虑线上招生、线上教学和服务。但是大多数人:没思路、没人才,不知道如何下手?其实线上运营也没那么难,“危机”即“机遇”。教育机构如何提高转化率?有哪些途径? 一、…...

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,缩写为GC,一种内存管理回收的机制…...

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

【牛客】SQL206 获取每个部门中当前员工薪水最高的相关信息
1、描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列,以上例子输出如下: 2、题目…...

2024年最新趋势跨境电商平台开发需了解的新技术
随着数字化技术的不断演进和全球市场的日益融合,跨境电商平台开发将面临前所未有的挑战和机遇。为了更好地适应并引领这一发展,开发者需要密切关注2024年最新的技术趋势,以确保他们的平台能够在竞争激烈的市场中脱颖而出。本文将对跨境电商平…...

Mac 查看jdk版本
$ /usr/libexec/java_home -VMatching Java Virtual Machines (1): 1.8.0_232 (x86_64) “AdoptOpenJDK” - “AdoptOpenJDK 8” /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home...

C++面向对象学习笔记五
本文主要讲解运算符重载,由于白鳯大佬没有具体讲解,所以本文自行补充了运算符重载的相关知识 目录 文章目录 前言 运算符重载 加号运算符重载 左移运算符重载 递增运算符重载 总结 前言 本文主要对于运算符重载进行探讨,分别对于成员函数重…...

7-Zip 的使用技巧
7-Zip 是一款功能强大的压缩软件,它提供了多种使用技巧来帮助用户更高效地管理文件。以下是一些7-Zip的使用技巧: 1. 压缩文件:用户可以通过7-Zip将文件或文件夹压缩成.7z或其他支持的格式,以节省空间。 2. 解压文件:…...

德国储能项目锂电池储能集装箱突发火灾:安全挑战再引关注
2024年4月27日,德国尼尔莫尔商业区的一起锂电池储能集装箱火灾事件引起了全球关注。这起事故不仅导致两名消防员在救援过程中受伤,更暴露了储能系统在安全领域亟待解决的重要问题。 根据德国消防队的出警记录,火灾发生在晚上9点前不久。消防人…...

FFmpeg常用API与示例(二)—— 解封装与转封装
封装层 封装格式(container format)可以看作是编码流(音频流、视频流等)数据的一层外壳,将编码后的数据存储于此封装格式的文件之内。 封装又称容器,容器的称法更为形象,所谓容器,就是存放内容的器具,饮料是内容&…...

笨方法自学python(一)
我觉得python和c语言有很多相似之处,如果有c语言基础的话学习python也不是很难。这一系列主要是学习例题来学习python;我用的python版本是3.12 代码编辑器我用的是notepad,运行py程序用cmd 现在开始写第一个程序: print ("…...

centos7.9升级4.19内核
centos默认的内核版本是3.10 通过命令 uname -a 输出系统的详细信息 在部署k8s集群时使用默认的3.10版本的内核,容易出各种奇奇怪怪的问题、可以理解为docker和k8s与该内核版本不兼容,所以在部署k8s集群时,务必要升级内核,这里…...

神经网络模型与前向传播函数
1.概念 在神经网络中,模型和前向传播函数是紧密相关的概念。模型定义了网络的结构,而前向传播函数描述了数据通过网络的流动方式。以下是这两个概念的详细解释: 1.1 神经网络模型 神经网络模型是指构成神经网络的层、权重、偏置和连接的集…...