c++ - C+ +'s unordered_map/hash_map/Google' s dense_hash - 如何输入二进制数据(buf+len)和插入操作

标签 c++ stl

我有两个关于 Google's dense_hash_map 的问题,可以用来代替更标准的 unordered_map 或 hash_map:

  1. 如何使用任意二进制数据内存段作为键:我想要一个缓冲区+长度对,它可能仍包含一些 NUL (\0) 字符。我可以看到如何使用以 NUL 结尾的 char * string ,但这不是我想要的。

  2. 我如何实现一个操作,查看某个键是否存在,如果不存在,则插入它,如果它确实返回指向现有键的指针,并让我知道实际发生了什么。

如果有人能阐明这个主题,我将不胜感激。

问候,

-- 什洛米鱼

最佳答案

我不同意尼尔的观点。

我会使用 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/

相关文章:

c++ - 重复重新分配后出现段错误

用于提取 .zip 文件的 C++ 包装器代码?

c++ - 执行时使用boost::asio::deadline_timer时出错

模板构造函数中的 C++ 链接器错误 : "unresolved external symbol"

c# - 使用 ATL/COM 将托管字节 [] 转换为非托管字节数组

c++ - 如何仅使用第二个值从集合中查找对?

c++ - STL 容器如何复制对象?

c++ - 享受两个世界 : vector With insert/erase efficiency of list

c++ - 二维 vector 的迭代器

c++ - for(int i=0;i<myVector.size();++i) 调用了多少次 size()?