...
unordered_map<string ,int> map;
for (const auto& str : words) {
map[str]++;
}
auto cmp = [map](string s1, string s2){
if (map[s1] == map[s2])
return s1 < s2;
return map[s1] > map[s2];
};
...
这给我no viable overloaded operator[] for type 'const unordered_map<std::__cxx11::string, int>' (aka 'const unordered_map<basic_string<char>, int>')
但是,如果我不使用 [] 运算符而是使用 .at() 进行访问。代码编译。
我不知道为什么。我检查了 [] 运算符和 .at() :两者都具有相同的方法签名。