编号 | CFL#025 |
标题 | 如果循环体中修改了基于范围的for循环的“auto”变量,则使用该变量的引用 |
语言 | C++ |
级别 | 2 |
类别 | 控制流 |
规范说明
如果循环体中修改了基于范围的for循环的“auto”变量,则使用该变量的引用
示例
考虑以下代码:
std::vector<int> ints{ 10, 20, 30 };
for(auto i : ints) {
if (i == 30) {
i = 40;
}
}
do something with "ints"
那么在for循环之后,“ints”变量仍然保持不变!相反,应该使用“auto”变量的引用:
std::vector<int> ints{ 10, 20, 30 };
for(auto& i : ints) {
if (i == 30) {
i = 40;
}
}
do something with "ints"