本文根据众多互联网博客内容整理后形成,引用内容的版权归原始作者所有,仅限于学习研究使用,不得用于任何商业用途。
C++11中引入了序列for循环以实现区间遍历的简化。这里所谓的区间可以是任一种能用迭代器遍历的区间,例如STL中由begin()和end()定义的序列。所有的标准容器,例如std::string、 初始化列表、数组,甚至是istream,只要定义了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)方式调用。
参考资料
网友评论