哈希映射如何在 c++ 中实现?
How are hash maps implemented in c++?
如何可视化mymap[key]++
。我是在递增键还是值?
在第 1 行中,hash[numberToFind]
键或值是我插入到结果中的?
unordered_map<int, int> hash;
vector<int> result;
for (int i = 0; i < arr.size(); i++) {
int numberToFind = target - arr[i];
if (hash.find(numberToFind) != hash.end()) {
result.push_back(hash[numberToFind]); //LINE 1
result.push_back(i);
return result;
}
在询问 stackoverflow.com 之前考虑去一个好的参考,cppreference.com 很好。
https://en.cppreference.com/w/cpp/container/unordered_map
-
key
是关键。 -
mymap[key]
返回对键key
处mymap
中的元素的引用。 -
如果
key
尚未在mymap
中,则默认mymap[key]
在key
处构造一个元素,然后返回对该元素的引用。 -
mymap[key]++
在键key
以mymap
递增元素。上面的规则仍然成立:如果key
尚未mymap
,则默认在键key
处以mymap
构造元素,然后递增。 -
myvec.push_back(mymap[key])
在key
处创建该值的副本,并将其添加到myvec
的末尾。复制是push_back
如何工作的功能。push_back
仅将元素的副本添加到向量的末尾。上面的规则仍然成立:如果key
还没有在mymap
中,那么一个元素默认在键key
mymap
中构造,然后复制到myvec
中。 -
numbers[i]
是对std::vector<int> numbers
中第i
个元素的引用。如果索引中还没有元素,则向量不会默认在索引处创建元素。相反,访问越界索引是未定义的行为。 -
hash[x]
是对键x
处std::unordered_map<int, int> hash
元素的引用。如有必要,默认创建如上所述。 -
hash[numbers[i]]
是对键numbers[i]
处hash
中的元素的引用。如有必要,默认创建如上。 numbers[i]
hash
中的元素设置为i
的值。
hash[numbers[i]] = i;
将键- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在C++中,如何在类和函数(可能是模板化的)的头中编写完整的实现
- std::random_device是如何实现的