写点什么

C++ 中的 STL 库函数之万能图——map

作者:KEY.L
  • 2022 年 7 月 07 日
  • 本文字数:612 字

    阅读完需:约 2 分钟

如今的算法比赛越来越多,琳琅满目,而且参加比赛也能丰富简历,所以今天给大家介绍一个在算法竞赛里几乎必备的“武器”--->map 概念 map 是 c++中 STL 的一个关联容器,它提供一对一的数据处理能力。换句简单的话来说就是一个映射,当可以用一个值去映射另外一个值使他对应,当然也可以是另外一个集合啥的之类的对于 map 来说,他需要两个参数,一个作为搜索时用到的引擎,关键字,而第二个参数就是与之所对应的值,下面讲讲比较常用且常见的 map。用法 1.map 和 pair 的嵌套


int x=1,y=1;    map< pair<int ,int >,int >mo;    mo[make_pair(x,y)]++;
复制代码


2.我们可以通过使用 map 的迭代器 iterator、调用 map 对象的 begin()和 end()函数,实现对于 map 中数据的遍历,如下:


    auto it = level.begin();    printf("%d", it->second);    while(++it != level.end()) printf(" %d", it->second);
复制代码


it->first 关键字(key)it>second 存储的数据(value)map 是有序的会根据 index 从小到大自动排序,这样递归完成后 level 中的值就是层序遍历的顺序 3.二维 map 就是可能有一个键对应两个键值


std::map<int , map<string,int> > ma;std::map<string, map<string,int> >::iterator it;
复制代码


在 c++17 中有关于新特性的 map 遍历,先介绍一下 c++14 的


map<int ,int >mo;for(auto x:mo){    cout<<x<<endl;  //即可遍历map,c++14中的auto的特性}for(auto &[a,b]:mo){    cout<<a<<" "<<b<<endl;  //即可遍历map,c++17中的特性,a就是键值,b就value}
复制代码


用户头像

KEY.L

关注

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

发布
暂无评论
C++中的STL库函数之万能图——map_7月月更_KEY.L_InfoQ写作社区