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

[leetcode]map的用法

1. 定义和初始化

  • 定义std::map是一个关联容器,键值对会自动根据键的值进行排序(默认是升序)。

    cpp复制

    map<char, int> mp;
  • 插入元素:可以通过operator[]insert方法插入键值对。

    cpp复制

    mp['a'] = 1;
    mp['b'] = 3;
    mp['c'] = 2;

2. 遍历

  • 使用迭代器遍历std::map的迭代器可以用来遍历容器中的所有键值对。

    cpp复制

    map<char, int>::iterator it = mp.begin();
    map<char, int>::iterator itE = mp.end();
    while (it != itE) {
        cout << it->first << " ";  // 输出键
        cout << it->second << endl;  // 输出值
        it++;
    }

3. 查找

  • 使用find方法查找find方法会返回一个迭代器,指向找到的键值对。如果键不存在,则返回end()

    cpp复制

    map<char, int>::iterator itFind = mp.find('b');
    if (itFind != mp.end()) {
        cout << itFind->first << " " << itFind->second << endl;
    }

4. 删除

  • 删除指定迭代器的元素:可以通过erase方法删除指定迭代器指向的元素。

    cpp复制

    map<char, int>::iterator itB = mp.find('b');
    mp.erase(itB);
  • 删除指定键的元素:也可以通过键直接删除元素。

    cpp复制

    mp.erase('b');
  • 删除范围内的元素erase方法还可以删除指定范围内的元素。

    cpp复制

    mp.erase(it, itE);

5. 获取大小

  • 使用size方法size方法返回容器中元素的数量。

    cpp复制

    cout << "The size of map is: " << mp.size() << endl;

6. 清空

  • 使用clear方法clear方法会删除容器中的所有元素,但不会释放内存。

    cpp复制

    mp.clear();
    cout << "The size of map after cleaning is: " << mp.size() << endl;

7.插入

      使用insert方法insert插入键值对进入map容器。

8.总结

std::map是一个非常强大的关联容器,适用于需要快速查找、插入和删除键值对的场景。它的主要特点包括:

  • 自动排序:键值对会根据键自动排序。

  • 高效查找:查找操作的时间复杂度为O(logn)。

  • 灵活操作:支持插入、删除、查找等多种操作

Coding

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

int main() {
    map<char, int> mp;
    mp['b'] = 3;
    mp['a'] = 1;
    mp['c'] = 2;
    //map will automatic sort by key value
    map<char,int>::iterator it = mp.begin();
    map<char,int>::iterator itE = mp.end();

    while (it != itE) {
        cout << it->first << " ";  
        cout << it->second << endl;
        it++;
    }
    
    //The map can use so-called find function
    map<char,int>::iterator itFind = mp.find('b');
    cout <<endl << itFind->first << " " << itFind->second << endl;
    
    
    //map can erase the aimed element or a contiuous part of elements
    //erase iterator b
    map<char,int>::iterator itB = mp.find('b');
    mp.erase(itB);
    
    //erase function can erase a contious elements
    //mp.erase(it,itE);
    
    //erase function can remove the elemnt by relative key
    //mp.erase('b');
    
    //size function can get the size of map
    cout << "The size of map is :" << " " << mp.size() << endl;
    
    //clear function can remove all of the map
    mp.clear();
    cout << "The size of map after cleaning is :" << mp.size() << endl;
    
    return 0;
}


http://www.kler.cn/a/601497.html

相关文章:

  • 【HCIA-网工探长】04:ARP笔记
  • 电机控制常见面面试问题(十九)
  • Spring Boot 的自动装配
  • 3.25-1 postman执行+弱网测试
  • 如何选择免费国产类 Postman 软件?
  • Docker-Volume数据卷详讲
  • Springboot整合elasticsearch详解 封装模版 仓库方法 如何在linux里安装elasticsearch
  • 从零开始实现 C++ TinyWebServer 构建响应 HttpResponse类详解
  • linux-------------进程概念(中)
  • ideaIU-2023.2.5.exe install (IntelliJ_IDEA_IU_2023.2.5)
  • 宝塔面板安装docker flarum失败,请先安装依赖应用: [‘mysql‘]:5/8
  • MongoDB不支持事务
  • 24、web前端开发之CSS3(一)
  • iPhone 16如何翻译文档?文档翻译技巧、软件推荐
  • 第五天 开始Unity Shader的学习之旅之Unity中的基础光照之漫反射光照模型
  • “thrust“ has no member “device“
  • OpenEMMA: 基于多模态大语言模型的端到端开源自动驾驶框架
  • linux如何释放内存缓存
  • WPS的PPT智能图形增加项目
  • 解锁PyPDF2:轻松驾驭PDF文件的Python库