欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

范围for语句

程序员文章站 2024-03-25 14:38:58
...

<基于C++ Primer P168>
C++11引入,可以遍历序列的所有元素。
1.形式:

for (declaration : expression)
	statement

2.例子:

// 将 vector 中每个元素都翻倍
vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// 使用 引用 对元素执行写操作
for (auto &r : v)
	r *= 2;

上述代码等价于以下传统的for语句:

vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
for (auto beg = v.begin(), end = v.end(); beg != end; ++beg)
{
	auto &r = *beg;
	r *= 2;
}

可以看出,不可以通过范围for语句增加 vector 中的元素。
因为在范围for语句中,预存了end()的值,在序列中添加(删除)元素可能造成 end 函数的值失效。