c++ - std::vector 和 std::list find_if 和 max_element 性能

标签 c++ list vector stl

我对针对 std::vectorstd::list 测试的代码的性能感到困惑。这两者在 find_ifmax_element 方面有区别吗?

最佳答案

就大 O 表示法而言,两者具有相同的 O(n) 性能。 (如果更快找到元素,find_if 可以更少,但这对两个容器同样适用。)

就实际挂钟时间而言,由于缓存一致性, vector 会表现得更好;所有 vector 元素在内存中都是连续的,因此访问它们将更好地利用 CPU 缓存。链表的元素可能分散在整个内存中,您还需要遵循列表链接,这需要时间。

关于c++ - std::vector 和 std::list find_if 和 max_element 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075583/

相关文章:

c# - 如何在 C++ 和 C# 之间共享一个大字节数组

c++错误编译器原型(prototype)和期望构造函数

c++ - 函数输入参数的 auto 是否可以替代函数模板?

c++ - 如何放置一个以模板类的对象为参数的函数?

python - 检查整数的连续性并返回唯一值

vector - 如何为距离测量的特征向量内的属性添加权重?

c++ - 如何将 vector<uint8_t> 转换为 unsigned char*

java - 过滤列表的组件

algorithm - 我需要加入两个列表,对它们进行排序并删除重复项。有一个更好的方法吗?

c++ - 迭代器 - 在 C++11 中没有匹配的删除函数