目录
4.2.1 Vector和List的异同
Vector 和 List 都是C++ STL中的序列容器,但它们在底层实现和适用场景上有明显的区别。
-
底层实现:
- Vector 是动态数组,它在内存中占据连续的空间,因此支持通过索引直接访问元素。
- List 是双向链表,在内存中不要求元素是连续存储的,因此不支持直接索引访问,而是通过指针进行遍历。
-
访问速度:
- Vector 的随机访问速度快,因为可以通过索引直接访问元素。
- List 的随机访问速度慢,访问某个元素需要从头遍历链表直到找到目标元素。
-
插入和删除操作:
- Vector 的插入和删除操作(尤其是在中间位置)效率较低,因为需要移动插入点之后的所有元素以保持内存连续。
- List 的插入和删除操作效率高,只需调整相邻节点的指针即可,不需要移动其他元素。
-
内存使用:
- Vector 使用连续的内存,因此可能需要频繁的内存分配和重新分配来扩展容量。