C++ STL map容器erase操作避坑

map容器的erase方法有三种重载形式:

//1.删除迭代器所指向的元素
//返回值是指向下一个节点的迭代器
iterator erase(iterator it);
//2.区间删除
iterator erase(iterator first, iterator last);
//3.根据键值删除
//返回值为删除的元素个数
size_type erase(const Key& key);

错误操作:

Expression: map/set iterator not incrementable

#include <iostream>
#include <map>
using namespace std;
void printMap(map<int,int> v);
int main() {
	map<int,int> m;
	m.insert(make_pair(1,1));
	m.insert(make_pair(2,2));
	m.insert(make_pair(3,3));
	//    printMap(m);
	
	for (map<int,int>::iterator it = m.begin();it!=m.end() ; it++) {
		if (it->first==2){			
			m.erase(it);    //此行存在问题			
		}
		
	}
	printMap(m);
	return 0;
}

void printMap(map<int,int> v){
	for (map<int,int>::iterator it = v.begin();it!=v.end() ; it++) {
		cout << "key="<<it->first<<",val="<<it->second << endl;
	}
}

正确代码例子:

#include <iostream>
#include <map>
using namespace std;
void printMap(map<int,int> v);
int main() {
	map<int,int> m;
	m.insert(make_pair(1,1));
	m.insert(make_pair(2,2));
	m.insert(make_pair(3,3));
	//    printMap(m);
	
	for (map<int,int>::iterator it = m.begin();it!=m.end() ; it++) {
		if (it->first==2){			
			it=m.erase(it);	//改正后		
		}
		
	}
	printMap(m);
	return 0;
}

void printMap(map<int,int> v){
	for (map<int,int>::iterator it = v.begin();it!=v.end() ; it++) {
		cout << "key="<<it->first<<",val="<<it->second << endl;
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows下载安装RabbitMQ客户端(2024最新篇)

文章目录 RabbitMQ认知RabbitMQ下载RabbitMQ安装 更多相关内容可查看 RabbitMQ认知 定义&#xff1a;RabbitMQ是一个消息中间件&#xff0c;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递…

【CTF MISC】XCTF GFSJ0155 simple_transfer Writeup(流量分析+文件提取)

simple_transfer 文件里有flag&#xff0c;找到它。 解法 用 wireshark 分析&#xff0c;大部分都是 TCP 协议。 打开协议分级统计&#xff0c;有个 DLEP 占了 94.2% 的数据。 作为过滤器使用。全都是 Unknown。 用 binwalk 扫描。 binwalk f9809647382a42e5bfb64d7d447b409…

【C++小知识】为什么C语言不支持函数重载,而C++支持

为什么C语言不支持函数重载&#xff0c;而C支持 编译链接过程函数名修饰过程总结 在了解C函数重载前&#xff0c;如果对文件的编译与链接不太了解。可以看看我之前的一篇文章&#xff0c;链接: 文件的编译链接 想要清楚为什么C语言不支持函数重载而C支持&#xff0c;有俩个过程…

svg使用 element plus 使用外部下载的svg,使用或作为背景图片的使用方式,svg背景填充自适应父级宽高

friger.vue 注意&#xff1a;引入路径后加#svgView(preserveAspectRatio(none))&#xff0c;可解决宽高设置无效的问题 代码上就这两句就行&#xff0c;它去这个路径下去找/assets/svgs/login-bg.svg&#xff0c;往这个目录下放svg文件就行<template><div class&quo…

交互规范:苹果 iOS 11 设计规范

文件格式&#xff1a;PDF&#xff08;请与班主任联系获取原型文档&#xff09; 文件名称&#xff1a;苹果 iOS 11 设计规范 文件大小&#xff1a;29.2 MB 文档内容介绍 免费领取资料 添加班主任回复 “210421” 领取

CCD(电荷耦合器件)架构的特点、优点和缺点

我发现半导体区域既可以充当光敏元件又可以充当电荷转移器件&#xff0c;这在某种程度上是违反直觉的&#xff0c;但这正是 FF CCD 中发生的情况。在积分过程中&#xff0c;像素位置响应入射光子而积累电荷。积分后&#xff0c;电荷包通过像素位置垂直移动到水平移位寄存器。 …

node创建项目

前言 &#xff08;一&#xff09;、Web Web的开发体系中&#xff0c;分成前端&#xff0c;后端&#xff0c;工具&#xff0c;三个主要的领域。 前端主要由由浏览器&#xff0c;HTMLCSS浏览器端JS完成。 后端主要是由Web服务器&#xff0c;数据库&#xff0c;动态脚本语言&a…

在Windows11系统上搭建SFTP服务器

利用OpenSSH搭建SFTP服务器 下载安装部署OpenSSH创建一个测试账户测试链接为SFTP用户配置根目录下载安装部署OpenSSH 参考链接 部署完启动服务要使用管理员模式。 net start sshd创建一个测试账户 使用PC的微软账户是访问不了SFTP的。 需要使用被微软账户覆盖掉的系统账户和…

Scanpy(4)用与数据整合和批次处理

Scanpy包,用与数据整合和批次处理,包含批次效应的BBKNN算法和用于对比的ingest基础算法比较,及其原理简介。 1. 依赖: (1)数据集(全部需要挂VPN): PBMC:pbmc3k_processed()(需要下载);pbmc68k_reduced()(scanpy自带)Pancreas(需要下载)(2)Python包:Scanp…

使用Visual Studio 分析.NET Dump

思维导航 前言什么是Dump文件&#xff1f;编写一段内存泄漏的代码查看程序运行情况并创建Dump文件使用Visual Studio分析Dump更多Visual Studio编程效率提升技巧DotNetGuide技术社区交流群 前言 内存泄漏和高CPU使用率是在日常开发中经常遇到的问题&#xff0c;它们可能会导致…

港科夜闻 | 香港科大宣布委任谭嘉因教授为副校长(行政)

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大宣布委任谭嘉因教授为副校长(行政)。香港科大6月3日宣布&#xff0c;委任谭嘉因教授接替庞鼎全教授出任副校长(行政)&#xff0c;由今年7月1日起生效。谭教授是原香港科大商学院院长&#xff0c;全球顶尖学者&am…

XML解析库tinyxml2库使用详解

XML语法规则介绍及总结-CSDN博客 TinyXML-2 是一个简单轻量级的 C XML 解析库,它提供了一种快速、高效地解析 XML 文档的方式。 1. 下载地址 Gitee 极速下载/tinyxml2 2. 基本用法 下面将详细介绍 TinyXML-2 的主要使用方法: 2.1. 引入头文件和命名空间 #i…

AI大模型时代必须关注的数据库 DuckDB1.0 正式发布

开源数据库DuckDB1.0 经过内部6年的打磨&#xff0c;积累了30万行代码&#xff0c;1.8万star&#xff0c;2024.06.03号正式发布了1.0版本&#xff08;代号 Snow Duck&#xff09;。 我们新一代程序员&#xff0c;没能见证MySQL 1.0、PostgreSQL 1.0、Windows 1.0、Linux 1.0、…

VUE3 学习笔记(11):vue-router路由要懂的知识点

在前后端没有分离之前&#xff0c;大家通常采用的MVC模式&#xff0c;由后端通过Controller层实现页面跳转&#xff0c;VUE是组件化的特点&#xff0c;说白了就是一个单页面应用&#xff08;挂载在public/index.html&#xff09;&#xff0c;意味着所有的页面只是各组件的组合。…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端&#xff1a;Uniapp-vue2.0 后端&#xff1a;Thinkphp6 前后端分离 前端支持&#xff1a; H5小程序双端APP&#xff08;安卓苹果&#xff09; 安装教程 【商业…

模拟量采集电压电流信号转Modbus数据采集模块 YL121-485

特点&#xff1a; ● 模拟信号采集&#xff0c;隔离转换 RS-485输出 ● 采用12位AD转换器&#xff0c;测量精度优于0.1% ● 通过RS-485接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压1000VDC ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高&#xff0c;…

RocketMQ教程(三):RocketMQ的工作原理

四个核心组件 RocketMQ 的架构采用了典型的分布式系统设计理念,以确保高性能、高可用和可扩展性。RocketMQ 主要由四个核心组件构成:NameServer、Broker、Producer 和 Consumer。下面是对这些组件以及它们在 RocketMQ 中的角色和功能的概述: 1. NameServer 角色和功能:Name…

一维时间序列突变检测方法(小波等,MATLAB R2021B)

信号的突变点检测问题是指在生产实践中&#xff0c;反映各种系统工作状态的信号&#xff0c;可能因为受到不同类型的噪声或外界干扰而发生了信号突变&#xff0c;导致严重失真的信号出现&#xff0c;因此必须探测突变出现的起点和终点。研究目的在于设计出检测方案&#xff0c;…

推荐一个免费的相亲工具

推荐一个免费的相亲工具&#xff0c;步骤如下&#xff1a; 1&#xff09;微信里面搜索公众号“光源桥”&#xff0c;并关注 2&#xff09;输入搜索条件进行搜索对象 例如下面搜索&#xff1a;

【机器学习】机器学习与推荐系统在电子商务中的融合应用与性能优化新探索

文章目录 引言机器学习与推荐系统的基本概念机器学习概述监督学习无监督学习强化学习 推荐系统概述基于内容的推荐协同过滤混合推荐 机器学习与推荐系统的融合应用用户行为分析数据预处理特征工程 模型训练与评估模型训练模型评估 个性化推荐基于用户的协同过滤基于商品的协同过…