Unordered_map 生成辅助密钥

Unordered_map produce secondary key

我使用字符串作为我的 unordered_map 的一种键,但我是否可以关联一个辅助唯一键,independent 来自主键,所以我可以用第二个键执行查找操作?

我在想密钥可能是内部哈希算法得出的哈希值。

我想在我保存的结构中包含一个 id(每次增加 1),但话又说回来,我必须先查找作为字符串的键。

这背后的原因:我想制作列表,以征用 unordered_map 中的一些元素,但是在列表中保存字符串而不是保存 intlong long 效率非常低. (我宁愿不使用指针,而是使用簿记风格的程序)。

您不能使用内部哈希算法得出的哈希值,因为它可能会因 table 大小增长而更改数字。这称为重新散列。也不能保证哈希值是唯一的(它们肯定不会)。

保留指向列表中元素的指针会工作得很好,因为 unordered_map 不会使指针无效。但是删除元素会比较麻烦

Boost 有 multi_index_container,它提供了许多有用的类似数据库的功能。它将非常适合您的任务。

如果您不想使用 Boost,您可以使用 unordered_map 和唯一的整数索引,另一个 unordered_map 保留 string->index 对以通过字符串键进行搜索。删除也很困难,因为要么每次删除记录时检查所有列表,要么每次遍历列表时检查记录是否仍然存在。