[英]Range for syntax
当我写这样的东西:
int data[] = {10,44,56,78,8};
int i = 0;
for(int element : data)
...
这for
由编译器在常规再翻译for
? 是for
只是一个语法糖?
该标准将基于范围的for
语句定义for
等效于:
{
auto && __range = range-init;
for ( auto __begin = begin-expr,
__end = end-expr;
__begin != __end;
++__begin ) {
for-range-declaration = *__begin;
statement
}
}
在您的情况下, range-init
是(data)
, begin-expr
是__range
, end-expr
是__range + 5
, for-range-declaration
是int element
而statement
是...
也就是说,如果我们替换所有这些,则您的for
循环等效于:
{
auto && __range = (data);
for ( auto __begin = __range,
__end = __range + 5;
__begin != __end;
++__begin ) {
int element = *__begin;
...
}
}
此转换是否实际上由编译器完成是实现细节。 您唯一可以保证的是您的代码将等同于上述代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.