数组最大的好处是能以 O(1) 用索引访问任意元素,次要好处是内存布局紧凑,省内存之余还有高缓存一致性(cache coherence)。但数组的缺点是不能快速插入元素,而且我们在使用数组的时候,可能还不知道应该分配多大的数组才合适。
另一个选择是链表(linked list),它的最大优点是可快速地插入元素(开端、末端或中间),但需要以 O(n)时间去经索引取得内容。如果我们只需顺序遍历,那么是没有问题的。还有一个小缺点,就是相对数组而言,链表在存储每个元素时有额外内存开销(存储下一节点的指针),而且片历时元素所在的内存可能不连续,令缓存不命中(cache miss)的机会上升。