欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > [leetcode]map的用法

[leetcode]map的用法

2025/3/26 7:05:52 来源:https://blog.csdn.net/qq_74776071/article/details/146511470  浏览:    关键词:[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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词