【紧急科普】关于 std::vector 和 std::list 谁性能好的讲解
很多面试官。。。唉。不是一个年代的人吧。八股文当中现在倾向于说 list 中间插入性能更好。
1,std::vector 和 std::list 同属逻辑线性表。
2,std::vector 在内存当中连续,std::list 在内存当中不连续。
3,std::vector 因为在内存当中连续,随机访问性能更好,支持下标访问,std::list 则相反。
4,两者需要考虑的是:std::vector 考虑内存操作复杂度,std::list 考虑逻辑复杂度。
5,影响两者性能的主要因素:
std::vector 在内存空间不足时,会申请新内存,拷贝旧数据到新内存。
std::list 需要先遍历找到相应的节点,申请单节点内存、更改前后节点指针。
6,两者谁性能更好完全取决于使用方式,包括单个元素内存占用、元素数量等。