当使用std :: deque作为FIFO时,哪对push / pop函数更好?
- push_back(),pop_front()
- push_front(),pop_back()
我怀疑效率方面没有区别,但至少哪个是最“惯用”的(即大多数程序员使用的)?
谢谢
当使用std :: deque作为FIFO时,哪对push / pop函数更好?
我怀疑效率方面没有区别,但至少哪个是最“惯用”的(即大多数程序员使用的)?
谢谢
deque并不是一个容器用于实现FIFO,因此不能有一种惯用的方法来使用它实现FIFO。如果您需要FIFO,请使用std::queue
。如果您坚持使用deque来实现它,那么任何一个提出的解决方案都同样适用。
std::queue
的标准声明是template <class T, class Container = deque<T> > class queue;
,而它的定义只不过是将push
别名为push_back
,将pop
别名为pop_front
,所以说deque
不能用来实现queue
几乎是错误的。 - jthillstd::deque
是更好的选择。 - Assil Ksiksi顺便说一下,如果您可以的话,最好直接使用std :: queue。push_back(),pop_front()
编写一个循环并计时两种方式
只有两个选择,你应该能够得到最适合你的架构和编译器版本的最佳答案
最好不要假设任何关于效率的事情。