形式:map<key,value>
一般以map<string,int>这种形式表示声明,<>内存储的是键值对的类型
声明key为string,value为int,名称为mp的map类型使用语句 map<string,int> mp;
key不重复
需要头文件<map>
可以通过键key找值value
以题 おみやげをまらいました 为例
题目的意思是输入每对字符串的第二个,让你找第一个,那么存储的时候就可以反过来存
key保存第二个字符串,value保存第一个字符串,这样就方便使用find(key)进行查找
输入的时候使用下标运算符,map[key]=value;下标是值key
代码如下:
#include<iostream> #include<cstdio> #include<cstring> #include<map> using namespace std; int main() { string s1,s2; map<string,string> mp; for(int i=1;i<=3;i++) { cin>>s1>>s2; mp[s2]=s1;//使用下标运算符 } int n; string st; cin>>n; map<string,string> ::iterator it;//声明迭代器 for(int i=1;i<=n;i++) { cin>>st; it=mp.find(st);//查找并将结果保存到迭代器 if(it!=mp.end())//不等于mp.end()说明找到了 cout<<it->second<<endl;//迭代器的<first,second>对应于map的<key,value> else cout<<"Fake"<<endl; } return 0; }
map常用操作:
//声明方式: map<keytype,valuetype> mp;//keytype是键的类型,valuetype是值的类型 //常用操作: mp.insert(pair<int,string>(1,"one"));//使用pair类型插入 mp.insert(map<int,string>::value_type (1,"one"));//使用value_type插入 mapStudent[1]="one";//下标方式插入 mp.find(key);//返回key映射的迭代器,如果没找到,返回指向末尾的迭代器(mp.end()) mp.erase(it);//删除it指向的元素 mp.erase(key);//key为要删除的映射的键 mp.erase(first,last);//范围删除 mp.size();//大小 mp.clear();//清除所有元素
使用迭代器进行遍历操作
假设迭代器为it,那么it->first为第一个元素,it->second为第二个元素
迭代器的声明方式为 map<string,int> :: iterator it; (<>内为数据类型)