我需要像字典一样的数据结构,但我不在乎使用的键。我只想用密钥作为句柄来识别项目,所以我想让结构来选择它。
示例:
RandomKeyDict dict;
Key k = dict.insert(foobar);
...
// somewhere else in the code
dict.get(k);
这个结构实际上是怎么命名的?
edit:我不认为vector
是我的人,因为我还需要从结构中删除项目。
在实现方面,您可以使用字典作为后端创建它,前端生成任意键。您需要保证密钥的唯一性,所以我建议使用递增计数器,而不是可能重复的随机密钥。
就术语而言,您可以调用键句柄,因为它们类似于用于查找对象的不透明指针,例如您可能在C或Win32编程中找到的对象。或者车票,比如从衣帽间或代客泊车处。
这被称为"准字典"。参见Torben Hagerup和Rajeev Raman的"高效Quasidictionary"。