c++ - 在容器上(循环期间)重复调用 size() 是否不好?

标签 c++ loops optimization stl

出于效率原因,我总是避免编写这样的循环:

for(std::size_t i = 0; i < vec.size(); ++i) { ... }

其中 vec 是一个 STL 容器。相反,我要么做

const std::size_t vec_size = vec.size();
for(std::size_t i = 0; i < vec_size; ++i) { ... }

或使用容器迭代器。

但第一个解决方案真的有多糟糕?我记得在 Meyers 中读到它将是二次的而不是线性的,因为 vector 不知道它的大小并且必须反复计数。但是现代编译器不会检测到这一点并对其进行优化吗?

最佳答案

vector::size() 是恒定时间的,通常实现为经过优化的简单内联函数。不要费心手动优化它。

关于c++ - 在容器上(循环期间)重复调用 size() 是否不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221969/

相关文章:

c - 缩放二维数组 C

c++ - 不理解一些编程模式

list - 如何更新tensorflow中优化器需要更新的变量列表?

c++ - Qt : catched mouseMoseEvent dont interact with QWebView html page element

c++ - 从可执行文件中读取多个签名

c - 为什么这会产生无限循环?

r - 尝试对多个数据帧重复相同的代码

c++ - 有没有办法提高这种查找的速度或效率? (C/C++)

C++ 从 std::vector<std::function<...>> 中删除 std::function

Android Native - 何时使用 64 位 NDK?