我有两个关于 Google's dense_hash_map 的问题,可以用来代替更标准的 unordered_map 或 hash_map:
如何使用任意二进制数据内存段作为键:我想要一个缓冲区+长度对,它可能仍包含一些 NUL (\0) 字符。我可以看到如何使用以 NUL 结尾的 char * string ,但这不是我想要的。
我如何实现一个操作,查看某个键是否存在,如果不存在,则插入它,如果它确实返回指向现有键的指针,并让我知道实际发生了什么。
如果有人能阐明这个主题,我将不胜感激。
问候,
-- 什洛米鱼
最佳答案
我不同意尼尔的观点。
我会使用 insert
作为数字 2。使用 find
然后使用 insert
会导致 2 次查找,同时使用 insert
如果元素已经存在,则进行一次查找而不覆盖。通常,insert
返回一个迭代器到相应的键/值对(即使未更新)+ 一个 bool 值,指示插入是否发生。
std::pair<iterator, bool> result = map.insert(std::make_pair(key(), value());
result.first->second; // accesses the value at key: `key()`
关于c++ - C+ +'s unordered_map/hash_map/Google' s dense_hash - 如何输入二进制数据(buf+len)和插入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990717/