您的位置:首页 > 编程语言 > C语言/C++

C++11 FAQ中文版:序列for循环语句

2012-05-02 10:55 162 查看
二28
Year 2011陈 良乔C++11
FAQ
序列for循环语句

序列for循环语句允许重复遍历一组序列,而这组序列可以是任何可以重复遍历的序列,如由begin()和end()函数定义的STL序列。所有的标准容器都可用作这种序列,同时它也同样可以是std::string,初始化列表(list),数组,以及任何由begin()和end()函数定义的序列,例如输入流。这里是一个序列for循环语句的例子:

void f(const vector& v)
{
for (auto x : v) cout << x << ‘n’;
for (auto& x : v) ++x;    // 使用引用,方便我们修改容器中的数据
}

可以这样理解这里的序列for循环语句,“对于v中的所有数据元素x”,循环由v.begin()开始,循环到v.end()结束。又如:

for (const auto x : { 1,2,3,5,8,13,21,34 })
cout << x << ‘n’;

begin()函数(包括end()函数)可以是成员函数通过x.begin()方式调用,或者是独立函数通过begin(x)方式调用。

(译注:好像C#中早就有这种形式的for循环语句,用于遍历一个容器中的所有数据很方便,难道C++是从C#中借用过来的?)

或参见:

the C++ draft section 6.5.4 (note: changed not to use concepts)
[N2243==07-0103] Thorsten Ottosen:

Wording for range-based for-loop (revision 2).
[N3257=11-0027 ] Jonathan Wakely and Bjarne Stroustrup:
Range-based for statements and ADL (Option 5 was chosen).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: