我有一个可以通过std::queue
或std::list
完成的实现。
我使用哪一个会有所不同吗? std::queue
似乎功能较少,因此比std::list
轻?
答案 0 :(得分:3)
我使用哪一个会有所不同吗?
是的 - 在几个方面。主要的考虑因素是可读性:通过使用std::deque
,您向代码的读者传达了您只想在容器的末端而不是中间插入和删除的意图。当你读别人的代码时,这是一件非常好的事情。
第二个考虑因素是容器本身的实现:与单独分配和存储元素的列表不同,std::deque
将其元素存储在块中以节省空间。这可以减少容器的占地面积,和/或使其稍微更快。另一方面,在迭代整个队列时可能存在效率低下的问题。
然而,效率考虑因素不应成为初始设计的一个因素,因为这是一个优化问题。
我认为最好的方法是争取最佳的可读性:使用能够以最干净的方式向您的代码读者传达您的意图的容器。
答案 1 :(得分:0)
似乎功能较少,所以它更轻......?
更多功能不会使物体的重量更重。我会使用在您的场景中最有意义的集合。如果您始终以先进先出的方式访问此内容,那么std::queue
将是合适的。如果您需要双链表功能,请使用std::list
。