通过使用unordered_map<string,vector> 容器快速实现键值对的存取匹配和查找来完成本题

```#include<bits/stdc++.h>
#include<unordered_map>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long ll;

const int N = 1e4 + 10;
unordered_map<string, vector<string>> ans;
string ns[N], qs[N];


//取出大写字符 即取出暗语
string str(string s1) {
    //判断开头字符是否是小写字符 小写直接跳过
    if(s1[0]>'Z'){
        return "";
    }
	string s = "";
	for (int i = 0; i < s1.size(); i++) {
		if (s1[i] <= 'Z') {
			s += s1[i];
		}
	}
	return s;
}


void solve() {
	int n, q;
	cin >> n >> q;
	//输入待匹配字符串

	for (int i = 0; i < n; i++) {
		cin >> ns[i];
        string s=str(ns[i]);
        //判断暗语数量是否为0
		if (s.size() != 0) {
			ans[s].push_back(ns[i]);
		}
	}

	for (int i = 0; i < q; i++) {
		cin >> qs[i];
        //暗语key==0 这证明没有与之对应的字符串
		if (ans.count(qs[i]) == 0) {
			cout << 0 << endl;
		}
		else {
			cout << ans[qs[i]].size() << endl;
            //逐个输出暗语对应的单词
			for (int j = 0; j < ans[qs[i]].size(); j++) {
				cout << ans[qs[i]][j] << endl;
			}
		}
	}
}

int main() {
	IOS;
	int _ = 1;
	//cin >> _;
	while (_--) {
		solve();
	}
	return 0;
}