一、基础与细节
1. 扩容策略
无论是 C++ STL 中的向量 vector 还是 Java Collections 中的 ArrayList,采用的扩容策略是_capacity <<= 1
,以保证
O(1)
的分摊时间复杂度。
2. remove(lo, hi)
remove(lo, hi)
的计算成本,主要消耗于后续元素的前移,线性正比于后缀的长度,而与被删除区间的长度无关(_size 控制最终的访问区间)。也就是说,被删除元素在向量中的位置越靠后,所需时间越短。