什么是关联容器

What is an associative container?

本文关键字:关联 什么      更新时间:2023-10-16

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

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

维基百科只在C++的上下文中包含了关联容器的定义。关联容器的概念是C++的东西吗?

关联数组上的条目似乎更好。它定义了关联数组的4个操作:

  1. 向集合添加对
  2. 从集合中删除对
  3. 现有对数值的修改
  4. 查找与特定键关联的值

不幸的是,我找不到关于这个定义的很好的参考文献。你知道我可以引用的任何相关来源吗?

关联容器是指不一定用以该语言的基开始的顺序整数索引的任何容器(在大多数基于C的语言中为0,在其他一些语言中为1)。如果论文中的数据结构满足这一要求,那么它就是一个关联容器。

一般来说,不要将维基百科作为学术论文的来源。

要查看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可用时这样做毫无意义,如果您的数据看起来像这样,那么只需使用std::set:

 a -> a
 b -> b
 c -> c

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