list和vector的使用
list和vector的使用基本相同,包括构造函数,迭代器,基本操作函数等,那么使用具体参照vector
list和vector的比较
list:
- 底层结构是带头节点的双向循环链表
- 在任意位置插入和删除的效率高,时间复杂度为O(1)
- 不支持随机访问
- 迭代器失效:插入元素不会导致迭代器失效,删除时只会导致当前迭代器失效,其他迭代器不受影响,重新赋值当前迭代器即可
vector:
- 底层结构是动态顺序表
- 在任意位置插入和删除效率低,插入有可能会增容,会导致开辟新空间,拷贝元素释放旧空间使效率更低
- 支持随机访问
- 迭代器失效:在插入元素可能会扩容导致原有迭代器失效所有迭代器需要重新赋值,删除时当前迭代器会失效需要重新赋值
使用场景
- 有大量插入和删除操作,不关心随机访问使用list
- 需要高效存储,支持随机访问,不关心插入删除效率时使用vector