pax*_*blo 10
矢量和deques之间的一个主要区别是后者允许在结构的前部以及后部有效插入.
Deques也不保证它们的元素在内存中是连续的,因此at-style操作符(索引)可能效率不高.
请注意,不同的是不太可能在实践中更小的藏品重要,但如果,例如,集合大小的增加,或者你修改它一般会变得更加重要,很多次每秒.
表现主要是.一个std::deque具有所有的功能std::vector,至少对于正常使用,但索引和遍历它通常将是略慢; 如果你习惯的话,最后可以追加reserve.当然,std::vector是默认容器,使用其他任何东西都会向读者建议您有特殊要求.
std::vector也保证了连续性,因此它(并且只有它)可用于连接需要a T*
或a的遗留功能T const*.
我可能会补充说,有一次我实际上遇到了一个性能问题,而且测std::vector得的速度要快std::deque,
 尽管事实上我经常从前面移除元素(使用容器作为队列,向后推,然后弹出面前).但是,我不知道这是否概括; 在我的情况下,队列相对较短(从不超过大约15个元素,通常更少),内容是char,复制非常便宜.但总的来说,std::vector即使我需要从前面删除元素,我也会使用它,如果只是因为它更好的局部性.我可能只考虑std::deque我是否期望成千上万的元素,复制起来很昂贵.
std::deque是一个双端队列。它也提供了有效的元素插入和删除,而不仅仅是在结尾,就像std::vector那样。向量保证将元素存储在连续存储中,因此您可以通过索引/偏移量访问其元素。std::deque不提供此保证。
| 归档时间: | 
 | 
| 查看次数: | 20085 次 | 
| 最近记录: |