您的位置:

Map.erase用法详解:从你的程序中删除指定键的项

一、Map.erase基本概念

Map是C++ STL库中的一个关联容器,用于存储键-值对。其中,键和值可以是任意类型,具备映射关系。Map中的键是唯一的,如果插入时键已存在,则该项的值会被更新。erase是Map中用于删除元素的方法。

二、Map.erase用法

Map.erase有多个重载形式,其中最常用的形式是只传入键值,例如:

map m;
m[1] = "one";
m[2] = "two";
m.erase(1); // 删除键为1的项

  

该代码中,先创建了一个int到string的Map,并插入两个键值对。然后,调用erase方法删除键为1的项。

除了只传入键值的情况,erase方法还可以传入迭代器或迭代器区间,用于删除指定位置的项。例如:

map m;
m[1] = "one";
m[2] = "two";
auto it = m.find(1); // 获取键为1的项的迭代器
m.erase(it); // 删除该项

  

该代码中,先创建了一个int到string的Map,并插入两个键值对。然后,通过find方法获取键为1的项的迭代器,并将该迭代器传入erase方法进行删除。

除了以上两种情况,erase方法还可以在删除时返回被删除项的值。例如:

map m;
m[1] = "one";
m[2] = "two";
string val = m.erase(1); // 删除键为1的项,并返回其值

  

该代码中,先创建了一个int到string的Map,并插入两个键值对。然后,调用erase方法删除键为1的项,并将返回值赋给val。

三、Map.erase注意事项

在删除Map中的键值对时,需要注意以下几点:

1. 如果试图删除一个未在map中出现的元素,将不会产生任何影响。

map m;
m.erase(1); // 不会产生任何影响,因为map中不存在键为1的项

  

2. 对于关键字相同的元素,Map只会保留最后插入的一个。因此,在进行删除时,只会删除第一个匹配的元素。

map m;
m[1] = "one";
m[1] = "new one";
m.erase(1); // 只会删除最后插入的"new one"元素,因为第一个元素被覆盖了

  

3. 使用迭代器删除元素后,该迭代器会失效。因此,在进行删除操作后,不要继续使用之前的迭代器。

map m;
m[1] = "one";
auto it = m.find(1);
m.erase(it);
m[1] = "new one"; // 这里修改元素1,再次调用it访问该元素将会出错

  

四、完整代码示例

#include <iostream>
#include <map>
using namespace std;

int main() {
    // 创建并填充一个Map
    map<int,string> m;
    m[1] = "one";
    m[2] = "two";
    
    // 删除键为1的项
    m.erase(1);
    
    // 删除迭代器指向的项
    auto it = m.find(2);
    m.erase(it);
    
    // 删除后访问
    if (m.find(1) == m.end()) {
        cout << "元素1已被删除" << endl;
    }
    
    // 获取删除的键值对值
    string val = m.erase(2);
    cout << "被删除键值对的值:" << val << endl;
    
    return 0;
}
Map.erase用法详解:从你的程序中删除指定键的项

2023-05-20
python基础学习整理笔记,Python课堂笔记

2022-11-21
js待办事项列表添加删除代码的简单介绍

本文目录一览: 1、“点击此处可添加笔记”的代码怎么写 2、js动态添加、删除html代码 3、vivo手机便签怎么一起删 “点击此处可添加笔记”的代码怎么写 输入符号就可以了第一步打开手机,点击备忘

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
python方法笔记,python基础教程笔记

2022-11-20
java方法整理笔记(java总结)

2022-11-08
python学习之笔记(python的笔记)

2022-11-10
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
java学习笔记(java初学笔记)

2022-11-14
python技巧笔记(python自学笔记)

2022-11-12
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
详解map.count的使用方法

2023-05-23
我的python学习基础笔记,python自学笔记

2022-11-18
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
如何在git中删除指定的提交记录

2023-05-18
javascript入门笔记1的简单介绍

2022-11-18
关于python学习第四次笔记的信息

2022-11-08
重拾python笔记三的简单介绍

2022-11-13
javascript简要笔记,JavaScript读书笔记

2022-11-17