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;
}

原创文章,作者:VJVAS,如若转载,请注明出处:https://www.506064.com/n/329977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VJVASVJVAS
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:56

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • 掌握magic-api item.import,为你的项目注入灵魂

    你是否曾经想要导入一个模块,但却不知道如何实现?又或者,你是否在使用magic-api时遇到了无法导入的问题?那么,你来到了正确的地方。在本文中,我们将详细阐述magic-api的…

    编程 2025-04-29
  • Python购物车程序

    Python购物车程序是一款基于Python编程语言开发的程序,可以实现购物车的相关功能,包括商品的添加、购买、删除、统计等。 一、添加商品 添加商品是购物车程序的基础功能之一,用…

    编程 2025-04-29
  • 爬虫是一种程序

    爬虫是一种程序,用于自动获取互联网上的信息。本文将从如下多个方面对爬虫的意义、运行方式、应用场景和技术要点等进行详细的阐述。 一、爬虫的意义 1、获取信息:爬虫可以自动获取互联网上…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29
  • Python一元二次方程求解程序

    本文将详细阐述Python一元二次方程求解程序的相关知识,为读者提供全面的程序设计思路和操作方法。 一、方程求解 首先,我们需要了解一元二次方程的求解方法。一元二次方程可以写作: …

    编程 2025-04-29
  • 如何使用GPU加速运行Python程序——以CSDN为中心

    GPU的强大性能是众所周知的。而随着深度学习和机器学习的发展,越来越多的Python开发者将GPU应用于深度学习模型的训练过程中,提高了模型训练效率。在本文中,我们将介绍如何使用G…

    编程 2025-04-29

发表回复

登录后才能评论