C ++ STL容器 - 关于类型的一些问题?

时间:2013-08-16 18:55:59

标签: c++ types stl stack containers

enter image description here


1 即可。如果队列基本上是“链接列表”,则它应该是关联类型,而Deque也应该是关联类型,因为这两个抽象数据类型适合该类别。为什么Queue是'适配器类型'和Deque-'Sequential'类型?为什么这些类型与其他定义混合在一起?

2. 为什么堆叠是适配器类型?是因为它遵循包装模式并存储标志?


此外,如果我没有意义,或者在技术上不正确,你能指出它吗?

编辑:我对关联类型的定义:http://en.wikipedia.org/wiki/Associative_array - 请参阅“实施”标签和第一句,您将看到“链表”数据结构。

1 个答案:

答案 0 :(得分:2)

我想你不知道“联想”这个词是什么意思。关联类型将一组数据与另一组数据相关联。就像人们的名字一样,你可以通过查找他们的名字找到一个人。 deque可以被称为链接列表的链接列表,它只是一个对象序列,因此它是一个顺序容器。没有对象关联。另请注意,该类别基于接口,而不是实现

我不同意使用“Adapter”作为一个类别,实际上,适配器为顺序容器提供了一个新的接口,因此它们不再像容器那样表现,而是完全像其他东西。即,队列,优先级队列或堆栈。同样,适配器不支持容器接口。 (虽然根据您的定义,它们仍然可以被视为容器)

尽管名称如此,dequequeue仍然没有没有。第一个是一个顺序容器,它针对两端的推送和弹出进行了优化,但可以执行矢量可以执行的任何操作。 queuequeue中对象的接口。

请注意,您的列表缺少C ++ 11容器:arrayforward_list是新的顺序容器,unordered_mapunordered_multimap,{{1} },unordered_set是新的关联容器。没有新的容器适配器。