基于范围的for循环(range-based for)
循环体是程序中最基本的控制语句之一,就是这么一个小的语法,却经常让在写循环代码的我们觉得有些心烦,要么觉得有点重复劳动,要么类型太长又得跳来跳去复制类型定义。
于是C++11引入了基于范围的for循环语法糖:
for (declaration : expression)
statement
于是现在遍历一个序列或者容器可以这样写(auto也是C++11的新语法,表示自动类型推导):
//将序列或容器中的元素都加上1
for (auto &r : v)
r += 1;
这等价于:
for (auto beg = v.begin(), end = v.end(); beg != end; ++beg) {
auto &r = *beg;
r += 1;
}
优点
- 语义更清晰
- 写法更安全,不容易出低级错误、
-
效率更高
总结起来这糖真甜。
网友评论