小说网站如何做书源,wordpress扫码收款,门户网站做,dns网站卫士 收录底层结构 vector的底层结构是动态顺序表#xff0c;在内存中是一段连续的空间。 list的底层结构是带头节点的双向循环链表#xff0c;在内存中不是一段连续的空间。
随机访问 vector支持随机访问#xff0c;可以利用下标精准定位到一个元素上#xff0c;访问某个元素的…底层结构 vector的底层结构是动态顺序表在内存中是一段连续的空间。 list的底层结构是带头节点的双向循环链表在内存中不是一段连续的空间。
随机访问 vector支持随机访问可以利用下标精准定位到一个元素上访问某个元素的时间复杂度是O(1)。 list不支持随机访问要想访问list中的某个元素只能是从前向后或从后向前依次遍历时间复杂度是O(N)。
插入和删除 vector任意位置插入和删除的效率低因为它每插入一个元素尾插除外都需要搬移数据时间复杂度是O(N)而且插入还有可能要增容这样一来还要开辟新空间拷贝元素是旧空间效率会更低。 list任意位置插入和删除的效率高他不需要搬移元素只需要改变插入或删除位置的前后两个节点的指向即可时间复杂度为O(1)。
空间利用率 vector由于底层是动态顺序表在内存中是一段连续的空间所以不容易造成内存碎片空寂爱你利用率高缓存利用率高。 list的底层节点动态开辟空间小姐点容易造成内存碎片空间利用率低缓存利用率低。
迭代器 vector的迭代器是原生态指针。 list对原生态指针节点的指针进行了封装。
迭代器失效 vector在插入元素时的时候要重新给所有的迭代器赋值因为插入元素有可能导致扩容只是原来的迭代器失效删除元素时当前迭代器同样需要重新赋值否则会失效。 list在插入元素的时候不会导致迭代器实现删除元素的时候指挥导致当前迭代器失效其他的迭代器不会受到影响。
使用场景 vector适合需要高效率存储需要随机访问并且不管行插入和删除效率的场景。 list适合有大量的插入和删除操作并且不关心随机访问的场景