おみやげをまらいました(STL--map相关)

形式: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;     (<>内为数据类型)

原文地址:https://www.cnblogs.com/theshorekind/p/14317233.html