在https://doc-snapshots.qt.io/qtcreator-extending/coding-style.html上推荐按照以下方式编写for循环:
Container::iterator end = large.end();
for (Container::iterator it = large.begin(); it != end; ++it) {
//...;
}
取代
for (Container::iterator it = large.begin(); it != large.end(); ++it) {
//...;
}
由于我很少在代码中看到这种风格,所以我想知道对于遍历STL容器的大型循环,连续调用end()是否会增加明显的运行时开销,或者编译器是否已经优化了这种情况。
编辑: 正如许多非常好的评论所指出的:仅当循环内的代码不修改end迭代器时,此问题才有效。否则,重复调用end是必需的。
for (Container::iterator it = large.begin(), end = large.end(); it != end; ++it) { ... }
,以便将变量end
的范围限制在仅限于 for 循环中。 - haffaxfor_each(begin(c), end(c), [](){});
,循环是给库编写者用的 :P - MSalters