从那以后,我开始使用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类似乎能够与QList完全相同地工作,因此是否有任何理由在QList上使用QQueue?

最佳答案

containers description中所述:



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

  • QQueue: enqueue dequeue head
  • QStack: push pop top

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

    除此以外:
  • QQueue与其基类QList相同。
  • QStack与其基类QVector相同。

  • 自己看看,看看源代码 –这些类中没有多余的东西:
  • qqueue.h / qqueue.cpp
  • qstack.h / qstack.cpp
  • 09-03 18:32