Range-based for loop (C++11 起)
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
执行for循环的范围内,.
操作过的值的范围,例如,从一些容器或列表.原文:
Used as a more readable equivalent to the traditional
for循环</div> operating over a range of values, for example, from some container or list.
原文:
for loop
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
目录 |
[编辑] 语法
for ( range_declaration : range_expression) loop_statement
|
|||||||||
[编辑] 解释
上面的语法产生类似下面的代码(
__range
,__begin
和__end
博览会)原文:
The above syntax produces code similar to the following (
__range
, __begin
and __end
are for exposition only): {
|
|||||||||
range_expression进行评估,以确定的顺序和范围将被遍历。被废弃的每一个元素的序列,并分配的变量的类型和名称在range_declaration.
原文:
The range_expression is evaluated to determine the sequence or range will be iterated over. Each element of the sequence is dereferenced, and assigned to the variable using the type and name given in the range_declaration.
的
begin_expr
和end_expr
定义是:原文:
The
begin_expr
and end_expr
are defined to be either:- (__range)和(__range + __bound)
__bound
为数组类型,数组绑定原文:(__range) and (__range + __bound) for array types, where__bound
is the array bound - begin(__range)和end(__range),而被发现,参数查找规则的基础上。对于标准的容器结束相当于std::beginstd::end而这又需要__range.begin()和__range.end().原文:begin(__range) and end(__range), which are found based on argument-lookup rules. For standard containers this ends up being equivalent to std::begin and std::end which in turn calls __range.begin() and __range.end().
range_expression返回一个临时的,它的寿命延长,直到循环结束,如绑定到右值引用
可以使用提前退出循环,__range
.原文:
If range_expression returns a temporary, its lifetime is extended until the end of the loop, as indicated by binding to the rvalue reference
__range
. continue语句
可以用来重新启动的下一个元素的循环.原文:
continue statement
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
原文:
Just as with a traditional loop,
break语句
can be used to exit the loop early and 原文:
break statement
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
continue语句</div> can be used to restart the loop with the next element.
原文:
continue statement
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
[编辑] 关键字
[编辑] 示例
#include <iostream> #include <vector> int main() { std::vector<int> v = {0, 1, 2, 3, 4, 5}; for (int &i : v) // access by reference (const allowed) std::cout << i << ' '; std::cout << '\n'; for (auto i : v) // compiler uses type inference to determine the right type std::cout << i << ' '; std::cout << '\n'; for (int i : v) // access by value as well std::cout << i << ' '; std::cout << '\n'; }
输出:
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5