【科普】关于 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,两者谁性能更好完全取决于情况及使用方式,包括单个元素内存占用、元素数量等。
参考资料 :
https://fylux.github.io/2017/06/29/list_vs_vector/
https://baptiste-wicht.com/posts/2012/11/cpp-benchmark-vector-vs-list.html
版权声明:
作者:芯片烤电池
链接:https://www.airchip.org.cn/index.php/2023/09/04/%e3%80%90%e7%b4%a7%e6%80%a5%e7%a7%91%e6%99%ae%e3%80%91%e5%85%b3%e4%ba%8e-stdvector-%e5%92%8c-stdlist-%e8%b0%81%e6%80%a7%e8%83%bd%e5%a5%bd%e7%9a%84%e8%ae%b2%e8%a7%a3/
来源:芯片烤电池
文章版权归作者所有,未经允许请勿转载。