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 次 |
最近记录: |