unorded_map 内部哈希表,o(n)
map 内部红黑树,o(logn)
3219. 模板生成系统 - AcWing题库
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
int n, m;
vector<string> strs;
unordered_map<string, string> vars;
int main()
{
cin >> n >> m;
getchar(); // 过滤掉第一行的回车
while (n -- )
{
string str;
getline(cin, str);
strs.push_back(str);
}
while (m -- )
{
string key, value;
cin >> key;
char c;
while (c = getchar(), c != '\"');
while (c = getchar(), c != '\"') value += c;
vars[key] = value;
}
for (auto& str: strs)
{
for (int i = 0; i < str.size();)
if (i + 1 < str.size() && str[i] == '{' && str[i + 1] == '{')
{
int j = i + 3;
string key;
while (str[j] != ' ' || str[j + 1] != '}' || str[j + 2] != '}')
key += str[j ++ ];
cout << vars[key];
i = j + 3;
}
else cout << str[ i ++ ];
cout << endl;
}
return 0;
}