Pio*_*cki 4 c++ containers stl vector deque
我有一个对象的"列表",我想从中随机获取对象并将其推到此列表的前面.只会执行这种操作.因此,我不需要快速访问列表的末尾,只需要访问其他任何地方的前端和平均访问权限.
哪个容器最适合这个?我在考虑std::vector,但我读过这个insert操作效率不高.然后我想出了std::deque因为它可以快速进入前方,但是它erase在特定位置方法的效率呢?
在此先感谢您的帮助.
我们可以为您提供指导,但没有明确的答案 - 您需要自己进行基准测试,因为它至关重要取决于您的集合和对象大小:
std::vector将更快,因为即使您需要复制更多数据,更好的随机访问时间(O(1)vs O(n)for std::list)和缓存局部性将占主导地位.std::list速度会更快,因为虽然您需要O(n)来挑选随机对象,但由于复制许多大型对象非常慢,因此插入速度会快得多.但究竟在这两种情况之间的截止位置我不能说.
此外,如果你可以逃避交换元素而不是插入,这是一个明智的选择:总是使用a std::vector.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |