1.vector:
底层:动态数组,可以快速访问随机元素;
内存分配:分配在连续的内存上;
时间复杂度:
(1)插入或删除元素:在队头或队尾插入或删除元素时可以实现O(1)的时间复杂度;在队中时的时间复杂度为O(n);(2)访问元素:O(1)的时间复杂度。
内存管理:由于在内存上是连续的,所以可以利用缓存机制来快速访问元素。
2.list:
底层:双向链表,可以快速插入元素;
内存分配:在内存上是离散存储的;
时间复杂度:(1)插入或删除元素时:在任意位置都是O(1)的时间复杂度;(2)访问元素:O(n)的时间复杂度。
内存管理:由于离散储存在内存上,因此在插入元素时不需要移动大量内存。
3.使用情景:
vecetor:(1)当需要在队首或队尾快速插入或删除元素时;(2)当需要快速访问随机元素时;(3)当更关心内存使用效率时;
list:(1)当需要快速在任意位置插入或删除元素时;(2)不需要快速访问随机元素;(3)在插入或删除时不希望移动大量内存。