gpt4 book ai didi

c++ - 基于范围的for循环对性能有好处吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:47 25 4
gpt4 key购买 nike

阅读 Stack Overflow 上有关 C++ 迭代器和性能的各种问题**,我开始怀疑 for(auto& elem : container) 是否被编译器“扩展”为最佳版本? (有点像 auto,编译器会立即将其推断为正确的类型,因此永远不会变慢,有时甚至会更快)。

** 比如你写有没有关系

for(iterator it = container.begin(), eit = container.end(); it != eit; ++it)

for(iterator it = container.begin(); it != container.end(); ++it)

对于非失效容器?

最佳答案

标准是你的 friend ,参见[stmt.ranged]/1

For a range-based for statement of the form

for ( for-range-declaration : expression ) statement

let range-init be equivalent to the expression surrounded by parentheses

( expression )

and for a range-based for statement of the form

for ( for-range-declaration : braced-init-list ) statement

let range-init be equivalent to the braced-init-list. In each case, a range-based for statement is equivalent to

{
auto && __range = range-init;
for ( auto __begin = begin-expr,
__end = end-expr;
__begin != __end;
++__begin )
{
for-range-declaration = *__begin;
statement
}
}

是的,该标准保证实现最佳形式。

并且对于许多容器,例如 vector,在此迭代期间修改(插入/删除)它们是未定义的行为。

关于c++ - 基于范围的for循环对性能有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com