0

我有一个可以由std::queue或来完成的实现std::list。我使用哪个有区别吗?std::queue似乎功能较少,所以它比std::list?

4

2 回答 2

3

我使用哪一个有区别吗?

是的 - 在几个方面。主要考虑因素是可读性:通过使用std::deque您向代码的读者传达您仅在容器的末端而不是中间插入和删除的意图。当你阅读别人的代码时,这是一件非常好的事情。

第二个考虑是容器本身的实现:与单独分配和存储元素的列表不同,将std::deque其元素存储在块中以节省空间。这可以减少容器的占用空间,和/或使其稍微快一些。另一方面,在遍历整个队列时存在潜在的低效率。

但是,在您的初始设计过程中,效率考虑不应成为一个因素,因为这是一个优化问题。

我认为最好的方法是争取最好的可读性:使用容器以最简洁的方式向代码的读者传达你的意图。

于 2013-02-13T01:45:07.630 回答
0

似乎功能更少,所以更轻......?

更多的功能不会使物体变得更重。我会使用在您的场景中最有意义的集合。如果您始终以先进先出的方式访问它,那么std::queue将是合适的。如果您需要双链表功能,请使用std::list.

于 2013-02-13T01:38:37.120 回答