雖然很早之前接觸過一小段時間這個,但是從來沒有仔細研究過,只知道很強大,很多功能都已經做好了,只需要拿過來用即可。
今天重新開始學習,先來一個簡單的map練習題(其中給出了C/C++的輸入輸出方法,因為之前一直使用流,所以C的輸入輸出有點薄弱,正好練習一下)
【人名查詢】
給定 n 個人名和 m 個查詢,每個查詢給定一個人名,對於每個查詢,輸出該查詢中給定的人名是否在之前給定的 n 個人名中出現過。
第一行為兩個整數n(1 <= n <= 10000), m(1 <= m <= 1000),之後n行每行一個人名,之後m行每行一個人名,表示每次查詢。人名為大小寫字母組成,最大長度為100。
對於每個查詢,輸出一行,若該查詢的人名出現過,輸出YES,否則輸出NO
5 2 ZhangSan ZhangEr ZhangYi LiSi LiWu ZhangLiu LiWu
NO YES
程序代碼:
#include<stdio.h> #include<iostream> #include<string> #include<map> using namespace std; int main() { int m,n; map<string,bool> name; string tmp; //scanf("%d%d",&m,&n); cin>>m>>n; for(int i=0;i<m;i++) { //scanf("%s",&tmp); cin>>tmp; name[tmp]=true; } for(int i=0;i<n;i++) { //scanf("%s",&tmp); cin>>tmp; if(name[tmp]) //cout<<"YES"<<endl;// printf("%s\n","YES\0"); else //cout<<"NO"<<endl;// printf("%s\n","NO\0"); } //system("pause"); return 0; }