使用STL列表和向量、链表和数组的利弊



我想知道STL:list, STL:vector,数组和链表在基本层面上的区别是什么。

我的理解是,一般来说,链表允许可增长的列表,插入和删除要容易得多,但是直接访问链表中的单个元素需要更长的时间,因为你需要遍历每个元素。

我可能遗漏了许多其他关键的区别,所以你也可以指出一些更明显的区别。

列表和向量在比较中是如何起作用的,什么时候你会选择其中一个而不是另一个?

列表和向量的区别如下:

  1. 插入所需时间:列表插入一个对象所需的时间为常数元素放入它们中,其中作为向量内部需要重新定位在插入新值之前存在于向量中的数据向量的容量等于元素的个数向量。这会增加处理器的开销和时间。
  2. 访问数据所需的时间: vector优于这个方面。Vector需要常量时间来访问存在的元素在中间。列表需要遍历到哪里
  3. 容器占用的内存: vector的容量和大小不一定是相同的。向量的容量增大指数级地消耗比实际需要更多的内存的容器中。列表占用的存储空间完全相同元素,因此在分配期间不会分配额外的内存

最新更新