【发布时间】:2010-12-26 16:47:15
【问题描述】:
我正在维护一个包含 10 个条目的固定长度表。每个项目都是类似 4 个字段的结构。将有插入、更新和删除操作,由数字位置指定。我想知道哪个是用于维护此信息表的最佳数据结构:
数组 - 由于移位,插入/删除需要线性时间;更新需要恒定的时间;没有空间用于指针;使用 [] 访问项目更快。
stl 向量 - 由于移位,插入/删除需要线性时间;更新需要恒定的时间;没有空间用于指针;访问项目比数组慢,因为它是对 operator[] 和链表的调用。
stl 列表 - 插入和删除需要线性时间,因为您需要在应用插入/删除之前迭代到特定位置;指针需要额外的空间;访问项比数组慢,因为它是链表线性遍历。
现在,我的选择是使用数组。合理吗?还是我错过了什么?
哪个更快:遍历一个列表,然后插入一个节点或移动数组中的项目以产生一个空位置,然后将项目插入该位置?
衡量这种性能的最佳方法是什么?我可以只显示操作前后的时间戳吗?
【问题讨论】:
-
如果数组是固定大小的,为什么还需要进行任何数组移位?
-
你实际实现了什么?
-
@Myles:这就像一个排名信息。把它想象成一个按升序排列的 10 个价格的列表。如果一个新的价格来了,我必须把它插入中间等级,那么当前的最后一个价格就必须走。所以我需要调动一些职位,为新的排名让路。
-
“访问一个项目比一个数组慢,因为它是对 operator[] 的调用” - 好的,停在那里。
-
另一个选项是 std::array,如果长度确实是固定的。
标签: c++ arrays list stl vector