我正在使用字符串作为unordered_map
的一种键,但我是否可以将辅助唯一键独立与主要键相关联,因此我可以执行用第二个键找到操作?
我当时认为密钥可能是内部哈希算法提出的哈希值。
我想在我正在保存的结构中包含一个id(每次增加1),但是再次,我必须首先查找字符串的键。
背后的原因:我想制作列出unordered_map
中的一些元素的列表,但列表中的保存字符串效率非常低,而不是保存int
或long long
。 (我宁愿不使用指针,而是使用记账方式)。
答案 0 :(得分:2)
您无法使用内部哈希算法提出的哈希值,因为它可能会因表大小增加而更改数字。这称为rehashing。哈希也不保证是唯一的(它们肯定不会)。
保持指向列表中元素的指针可以正常工作,因为unordered_map
不会使指针无效。但删除元素将很难。
Boost有multi_index_container
,它提供了许多有用的类似数据库的功能。它将非常适合您的任务。
如果您不想使用Boost,可以将unordered_map
与唯一整数索引一起使用,并使用另一个unordered_map
来保留string->index
对,以便按字符串键进行搜索。删除也很难,因为每次删除记录时都会检查所有列表,或者每次遍历列表时都会检查记录是否仍然存在。