欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【数据类型】映射map

【数据类型】映射map

2025/9/29 3:03:02 来源:https://blog.csdn.net/yangyanbin_sam/article/details/142331148  浏览:    关键词:【数据类型】映射map

小明正在备考英语四级考试,但他的词典太厚了,他记不住哪个单词在哪里。

于是他准备开发一个可以直接找某单词在某页的应用。

但是,他不会做,整天十分烦恼。

好啦,进入正题,大家好,我是@学霸小羊,今天来讲讲map——映射

map翻译为映射,是STL中的常用容器。

其实,数组就是一种映射,比如:int a[100];就是定义了一个int到int的映射。而 a[5]=25 ; 就是把 5 映射到25。

数组总是将 int 类型映射到其它基本类型(称为数组的基类型),这同时也带来了一个问题,有时候我们希望把 string 映射成一个 int ,数组就不方便了。

这时就可以使用map,map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。

而我们,就要通过映射,开发一个小明想要的程序。

(当然,是为了我考英语四级考试用的,我才懒得帮小明做)

  1. 第 1 行 1 个正整数 N,N<=10,000,表示字典中一共有多少个单词。
  2. 接下来每两行表示一个单词,其中:
    • 第 1 行是一个长度小于或等于 100 的字符串,表示这个单词,全部小写字母,单词不会重复。
    • 第 2 行是 1 个整数,表示这个单词在字典中的页码。
    • 接下来一行是 1 个整数 M ,M <= 10,000,表示要查的单词数。
    • 接下来的M行,每行一个字符串,表示要查的单词,保证在字典中存在

做这个程序,想必大家都会想到结构体,但是,请看(不是VCR):

这,打破了我们美好的幻想。

关键时刻,映射出场了!

映射其实是数组的变形,它可以随意改变数组下标的类型,以及数组存储内容的类型。

定义方法:

map<string,int> mp;
//定义以字符串为下标、int类型为映射mp

上面代码中的string和int是可以替换的。

映射,顾名思义,通过某物映射到另一物;而上面代码就是通过字符串映射他的页码(整型)。

而那个“下标”,叫 键值(关键值);和他对应的那个值,较映射值。

例:

#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;
int main(){mp["ant"]=10;mp["bear"]=14;mp[elephant]=21;string s;cin>>s;cout<<mp[s];return 0;
}
/*
输入:ant
输出:10
*/

map除了可以用下标(键值)访问,还可以用迭代器访问:

例如:定义了 map< char , int > mp,且做了多次操作后,输出所有的值。

mp['c']=124, mp['t']=100,  mp['c']=200;map<char,int>::iterator it; //定义迭代器变量 itfor(it=mp.begin(), it !=mp.end(), it++)  //用迭代器来输出映射的内容cout<<it->first<<':'<<it->second<<endl;

总结起来,就是一下这几种操作:


map<key_type,value_type>name;//普通的定义map<string,int>::iterator it; //定义映射类型的迭代器。it->first; // 引用键值it->second // 引用映射值。m.size(); // 元素个数;m.empty(); // 判m是否空;m.clear(); // 清空m;m.begin();  //是指向map中最小元素的迭代器。m.end();  //是指向map中最大元素下一个位置的迭代器。

好啦,就今天就讲到这,拜拜!

版权声明:

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

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

热搜词