F. 模板库应用2-模板题2

题目描述

有两种操作:

  1. 给一个名字为s的人标号x,
  2. 查询名字为s的人的标号。

不保证所有数不相同,不保证操作2所查询的人一定存在。

输入描述

输入一个n,表示接下来有n种操作,

接下来n行每行一个数op,一个字符串s,

若op=1,则之后再跟一个数x,表示你要将名字为s的人标号为x,

若op=2,则你需要输出名字为s的人的标号。

输出描述

对于每个操作2输出一行,

如果不存在这个人,输出”Not found.”(不含双引号),

如果存在,则输出这个人的标号。

样例输入

10 2 cqszhwgywo 1 uqhlayolko 286241036 2 gdielmpguw 2 uqhlayolko 1 lturzllzrj 241550001 1 zkbvujvncb 674852961 1 wogdltbior 236413121 1 bccgbnbzzm 622686621 1 uckgjjyume 415730509 2 lturzllzrj

样例输出

Not found. Not found. 286241036 241550001

数据范围

|s|为字符串s的长度

n=100000, |s|=10, 1 ≤ x ≤ 1000000000

时空限制

1s, 512M

思路:
先输入,循环n次
判断是1还是0
是1就存起来
是0就判断是否存在号码
输出号码或Not found
#include

#include
#include
using namespace std;
map<string, int> mp;
int main() {
int n;
scanf(“%d”,&n);

while(n--)
{
    int op;
    scanf("%d",&op);
    
    if(op==1)
	{
        string s;
        int x;
        cin>>s>>x;
        
        mp[s]=x;
    }
	else
	{
        string s;
        cin>>s;
        
        if(mp[s]!=0)
		{
            cout<<mp[s]<<endl;
        }
		else
		{
            printf("Not found.\n");
        }
    }
}

return 0;

}

有个东西叫哈希,有个东西叫 unordered_map,还有个东西叫 __gnu_pbds::gp_hash_table