【问题标题】:C++ STL Containers- some questions on Types?C++ STL 容器——关于类型的一些问题?
【发布时间】:2013-08-19 06:30:00
【问题描述】:


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

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


另外,如果我没有意义或技术上不正确,您能指出来吗?

编辑:我对关联类型的定义:http://en.wikipedia.org/wiki/Associative_array - 去查看实现选项卡,第一句话你会看到“链表”数据结构。

【问题讨论】:

  • 你对关联类型的定义是什么?
  • 你说的可能是C++ standard library, not the STL
  • 我可以解释 Queue:在 STL 中,“queue”数据结构在不同类型(默认情况下为 dequeue)周围放置了一个包装器,因此您只能将对象添加到开头并从结尾。它可以是向量、链表或任何你想要的。
  • 同样适用于 std::stack 和 std::priority_queue
  • @H2CO3:在这种特殊情况下,他可能在谈论 STL,因为这里提到的所有类型都属于 STL。

标签: c++ types stl stack containers


【解决方案1】:

我想你不知道“联想”这个词是什么意思。关联类型将一组数据与另一组数据相关联。喜欢人的名字,所以你可以通过查找他们的名字来找到一个人。 deque 可以称为链表_similar_,链表只是一个对象序列,所以它是一个顺序容器。没有进行对象关联。还要记住,类别是基于接口,而不是实现

我不同意将“适配器”用作一个类别,实际上,适配器为顺序容器提供了一个新接口,因此它们的行为不再像容器,而是完全像其他东西。即,队列、优先级队列或堆栈。同样,适配器不满足容器接口。 (尽管它们仍然可以被视为容器,具体取决于您的定义)

尽管有名字,dequequeue 没有任何共同点。第一个是顺序容器,它针对两端的推入和弹出进行了优化,但可以做任何向量可以做的事情。 queuequeue 中对象的接口。

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

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2017-05-16
    相关资源
    最近更新 更多