什么是关联容器?

时间:2013-11-20 13:40:38

标签: c++ data-structures associative-array

我正在写一篇关于某个新数据结构的论文。此结构包含(key, value)对,并支持key快速查找。

我可以在论文中将其称为关联容器吗?

Wikipedia包含关联容器only in the context of C++的定义。 关联容器的概念是C ++的东西吗?

Associative arrays上的条目似乎更好。它根据4个操作定义关联数组

  1. 将对添加到集合
  2. 从集合中删除对
  3. 修改现有对的值
  4. 查找与特定键相关联的值
  5. 不幸的是,我找不到很好的参考这个定义。您知道我可以引用的任何相关来源吗?

2 个答案:

答案 0 :(得分:9)

要查看C ++中关联容器的真实示例,请查看std::setstd::map。他们是非常好的例子。通常,对于关联容器,有一个键和一个值,键是唯一的。一些不熟悉数据结构的人常常想知道std::set是如何关联的,因为它只有一件事!在std::set中,键和值是相同的。在地图中,键可以与值不同。

std::set(关键是值):

 a    
 b    
 c

std::map(键和值可能不同):

 1 -> a    
 2 -> b    
 3 -> c    

std::map也可以像std::set一样使用,但在std::set可用时执行此操作是没有意义的,如果您的数据看起来像这样,那么只需使用{ {1}}:

std::set

所以要知道,如果你想实现自己的关联容器,你可以只实现一个映射,当有人想把它作为一个集合使用时,只需使键等于该值即可。事实上,我相信Go only implemented maps,它们可以用作地图或集合。

答案 1 :(得分:8)

关联容器是任何不必使用以语言基础开头的顺序整数索引的容器(大多数基于C的语言为0,其他语言为1)。如果论文中的数据结构符合该要求,则它是一个关联容器。

作为一般规则,请勿使用维基百科作为学术论文的来源。