数据结构的名称(如果存在)具有以下操作的名称是什么?
答案 0 :(得分:62)
内存分配器
您分配(插入)一个元素,并给定一个键(指针,引用等),您可以通过指针引用检索该元素(访问它)。
答案 1 :(得分:10)
这是(非常接近)符号表,在Lisp意义上(注意,短语“符号表”也可以指定相关但不同的数据结构)。符号表是从称为符号的键到称为绑定(或插槽或其他术语)的值的关联。
注册新密钥的操作称为gensym
。 Lisp符号总是有一个唯一的名称,这是一个字符串; gensym
返回任何符号都未使用的名称。 Lisp还支持按名称查找符号:intern
返回给定名称的符号,如果不存在则创建符号;某些实现提供intern-soft
以避免在没有该名称的情况下创建符号。给定一个符号,您可以使用symbol-value
检索相关值。
如果您不了解Lisp,请将符号视为变量; gensym
创建一个新变量,symbol-value
返回由引用指定的变量的值。这些操作在编写很好的Lisp支持的宏(元编程)时特别有用。 Modern Lisp实现具有“uninterned”符号,即不在任何表中的符号,这使得事物更清晰。这与您想到的数据结构无关(未加工的符号将是您的数据结构中不存在的东西)。
符号表很容易在地图(字典)界面上实现(通常使用哈希表或平衡树实现)。 Gensym找到了一把新钥匙,创造并返回它。查找是通常的地图查找。如果你的所有密钥都是由gensym创建的,那么密钥类型可以保持抽象。
答案 2 :(得分:5)
我不确定它叫什么,但它是在版本控制系统中实现的。例如,Git存储具有以下数据类型:在其中存储blob并获取密钥,即SHA-1哈希。稍后,您可以使用该密钥检索blob。
我认为某些文件系统也可能以这种方式工作。
我可以称之为“匿名价值商店”。
答案 3 :(得分:4)
听起来像哈希表/字典,虽然密钥是已知的而不是给定的。
答案 4 :(得分:3)
在“企业存储解决方案”(或其他)的空间中,这通常被称为内容可寻址存储,假设密钥本身是从您放入的内容中派生出来的(例如加密哈希),但这是在大多数情况下,只是一个实现细节。
答案 5 :(得分:1)
我认为这是Big Table示例,可以在Google Storage上找到。我们可以从key easy中检索元素。
答案 6 :(得分:1)
对我来说听起来像一个可增长的数组(std :: vector)。在插入时,返回项目数作为ID,您就完成了。满足要求并提供简单的存储。
答案 7 :(得分:0)
听起来它有资格使用Map和Hash。
你必须对元素插入有更具体的了解,以便进一步识别它。
答案 8 :(得分:0)
听起来像字典。 在散列集中,元素表充当键,使用从元素集到自然数的散列函数。 字典的工作方式类似,通过使用键的哈希集,表中的每个条目都指向一个值。
我不知道任何一个ADT,其中一个元素插入一个元素然后取回一个键...
答案 9 :(得分:0)
它可能是哈希表的实现。
答案 10 :(得分:0)
这可能适合一些结构的定义和功能,但大多数通常是指哈希表或地图。