vector和deque之间的区别?
1.底层数据结构:
vector特点:动态数组,内存是连续的,2倍的方式进行扩容;
deque特点:动态开辟的二维数组空间,内存并不连续,第二维是独立new出来的,属于分段连续。固定长度,扩容的时候,第一维的数组进行二倍扩容;
2.前中后删除插入元素的时间复杂度:
中间插入删除都是O(n),末尾插入删除都是O(1),头插deque的时间复杂度是O(1),vector是O(n);
3.对于内存的使用效率
vector需要的内存空间必须是连续的,deque可以分块进行数据存储,不需要内存空间必须是连续的
4.在中间进行insert和erase,二者的效率谁更高
由于deque第二维的内存空间不是连续的,所以在deque中间进行元素的insert或者erase,会造成元素移动的时候比vector更慢;
vector和list之间的区别?
1.底层数据结构:
vector是数组,list是双向循环链表
2.插入删除的时间复杂度
vector是数组,插入删除O(n),查询也是O(n),随机访问O(1);
list是双向循环链表,(不考虑查询的花费)插入删除O(1),但是查询是O(n),