QQueue容器存在的目的是什么?

时间:2017-04-10 14:23:07

标签: qt qlist

我开始使用Qt了,我一直在使用QQueue类作为std::queue的替代品。虽然今天我认为我能够使用QQueue对象上pop_front类的pop_backpush_frontpush_backQList函数。想知道为什么你能够在队列中使用这些功能(尤其是 pop_back push_front ),我检查了Qt文档,并发现QQueue正在继承QList。

对我而言,队列的主要好处是充当队列:在后面排队东西,在前面排队。但是当我继续阅读文档时,我认为enqueuedequeue函数只是QList类的appendtakeFirst函数的等价物。甚至head函数也与QList的first函数相同。最重要的是,使用 pop_back push_front 等函数的可能性完全打破了队列的初始逻辑,而文档本身则将QQueue类呈现为队列容器:

  

QQueue类是一个提供队列的通用容器。

     

QQueue是Qt的通用容器类之一。它为相同类型的项实现了队列数据结构。

     

队列是先进先出(FIFO)结构。使用enqueue()将项添加到队列的尾部,并使用dequeue()从头部检索。 head()函数提供对头项的访问而无需删除它。

对于QQueue类存在的目的,我有什么遗漏?我的意思是,为什么创建这个队列容器,以便它可以比队列应该做的更多?由于QQueue类似乎能够以与QList完全相同的方式工作,有没有理由在QList上使用QQueue?

2 个答案:

答案 0 :(得分:3)

containers description中所述:

  

QStackQQueue是提供LIFOFIFO语义的便捷类。

唯一的区别是您提到的其他方法

主要观点是语义上更合适且直观的方法命名

否则:

  • QQueue与其基类QList相同。
  • QStack与其基类QVector相同。

自己查看,看看源代码 - 这些类中没有额外的内容:

答案 1 :(得分:1)

QQueue本身继承自QList,只是添加了一些已在QList中以不同名称出现的方法。除了语法糖之外没有必要使用它。