范围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 函数的值失效。
上一篇: tomcat使用apr优化