c++ - std::vector 与 std::list 与 std::slist 的相对性能?

对于一个不需要随机访问列表元素的简单链表,使用 std::list 代替 std 是否有任何显着优势(性能或其他方面): : vector ?如果需要向后遍历,在遍历其元素之前使用 std::slistreverse() 列表会更有效吗?

最佳答案

像往常一样,性能问题的最佳答案是 profile您的用例的两种实现,看看哪个更快。

一般来说,如果你有插入到数据结构中(除了最后),那么 vector 可能会更慢,否则在大多数情况下 vector 预计会执行如果仅适用于 data locality issues,则优于 list ,这意味着如果数据集中相邻的两个元素在内存中是相邻的,那么下一个元素将已经在处理器的缓存中,并且不必将内存分页到缓存中。

还请记住,vector 的空间开销是恒定的(3 个指针),而 list 的空间开销是为每个元素支付的,这也减少了可以在任何时候驻留在缓存中的完整元素(数据加上开销)的数量。

https://stackoverflow.com/questions/238008/

相关文章:

c++ - std::tuple get() 成员函数

c++ - 如何在 GCC 搜索路径中包含头文件?

c++ - 使用 C++ 基类构造函数?

c++ - 为什么 C/C+ +'s "#pragma once"不是 ISO 标准?

c++ - 内存分配是系统调用吗?

>' should be ` > >' within ">c++ - 模板内的模板 : why "` >>' should be ` > >' within

c++ - 为什么优化会杀死这个功能?

c++ - 是否有可以解析 C++ 的优秀 Python 库?

c++ - queue::push 后双重释放或损坏

c++ - 在 std::map 中更改元素键的最快方法是什么