【发布时间】:2019-09-06 06:47:32
【问题描述】:
我正在使用 c++ stl unordered_map 库来解决一些 leetcode 问题。我可以使用 find 函数和 [] 运算符重载来访问我的元素。但是我已经看到了一些使用 for 循环遍历哈希图的所有元素的答案。据我了解,hashmap 的内部结构通常是一个向量,并且这个向量永远不会被完全使用(这意味着会有空槽来保持恒定的大 O,以免发生太多冲突)。但是从答案中我看到人们正在迭代向量,但他们没有打印这些空索引,因为我没有看到任何垃圾值。我不明白这怎么可能。这是我见过的代码。
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> mp;
for (string s : strs) {
mp[t].push_back(s);
}
vector<vector<string>> anagrams;
for (auto p : mp) { //this is the part I don't understand
anagrams.push_back(p.second);
}
return anagrams;
}
我希望遍历 hashmap 数据结构的底层向量的每个元素都有垃圾值,因为并非所有成员都填充在向量中,但结果不包括这些值,只给出正确的输出。我不明白怎么做。
【问题讨论】:
-
在不相关的注释中,您不需要第一个循环。只需执行
mp[t] = strs;即可一次性复制完整向量。 -
哇,我不知道这是可能的。谢谢。
标签: c++ hashmap unordered-map