其次, 不同的集合在进行特定操作时往往有不同的效率。 最好的例子便是矢量(Vector) 和列表(List) 的区别。 它们都属于简单的序列, 拥有完全一致的接口和外部行为。 但在执行一些特定的任务时, 需要的开销却是完全不同的。 对矢量内的元素进行的随机访问(存取) 是一种常时操作; 无论我们选择的选择是什么, 需要的时间量都是相同的。 但在一个链接列表中, 若想到处移动, 并随机挑选一个元素, 就需付出“惨重” 的代价。 而且假设某个元素位于列表较远的地 方, 找到它所需的时间也会长许多。 但在另一方面, 如果想在序列中部插入一个元素, 用列表就比用矢量划算得多。 这些以及其他操作都有不同的执行效率, 具体取决于序列的基础结构是什么。 在设计阶段, 我们可以先从一个列表开始。 最后调整性能的时候, 再根据情况把它换成矢量。 由于抽象是通过继承器进行的,所以能在两者方便地切换, 对代码的影响则显得微不足道
面向对象程序设计英文文献和中文翻译(5):http://www.youerw.com/fanyi/lunwen_87408.html