"random key dictionary"结构的实际名称是什么?



我需要像字典一样的数据结构,但我不在乎使用的键。我只想用密钥作为句柄来识别项目,所以我想让结构来选择它。

示例:

RandomKeyDict dict;
Key k = dict.insert(foobar);
...
// somewhere else in the code
dict.get(k);

这个结构实际上是怎么命名的?

edit:我不认为vector是我的人,因为我还需要从结构中删除项目。

在实现方面,您可以使用字典作为后端创建它,前端生成任意键。您需要保证密钥的唯一性,所以我建议使用递增计数器,而不是可能重复的随机密钥。

就术语而言,您可以调用键句柄,因为它们类似于用于查找对象的不透明指针,例如您可能在C或Win32编程中找到的对象。或者车票,比如从衣帽间或代客泊车处。

这被称为"准字典"。参见Torben Hagerup和Rajeev Raman的"高效Quasidictionary"。

最新更新