原本想使用map容器做,想用下find函数,结果忘了题目里要求输出顺序要和输入顺序一样, 不过后来还是补充了一个vector过了


#include<bits/stdc++.h>
using namespace std;
int main(){
    int n=0;int m = 0;
    while(cin>>n){
        map<string,int>cal;
        vector<string>can;
        for(int i = 0; i< n;i++){
            string name;
            cin>>name;
            can.push_back(name);
            cal.insert(make_pair(name,0));
        }
        cin>>m;
        int invalid = 0;
        map<string,int>::iterator it ;
        for(int i = 0;i<m;i++){
            string choice;
            cin>>choice;
            it = cal.find(choice);
            if(it!=cal.end()){
                it -> second++;
            }
            else{
                invalid++;
            }

        }
        /*
        for(auto it = cal.begin(); it != cal.end(); it++){
            cout<<it->first<<" : "<<it->second<<endl;
        }
        */
        for(int i = 0;i<can.size();i++){
            cout<<can[i]<<" : "<<cal[can[i]]<<endl;
        }
        cout<<"Invalid : "<<invalid<<endl;
        cal.clear();

    }
    return 0;
}