从那以后,我开始使用Qt,并且一直在使用QQueue类替代std::queue。尽管今天我发现我可以在QQueue对象上使用pop_front类中的pop_back,push_front,push_back和QList函数。想知道为什么您可以在队列上使用这些功能(尤其是pop_back和push_front),我检查了Qt文档,并发现QQueue继承了QList。
对我来说,队列的主要兴趣是充当队列:将内容排在后面,将内容排在前面。但是当我继续阅读文档时,发现enqueue和dequeue函数与QList类的append和takeFirst函数等效。甚至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