最佳答案
读了一些基于范围的循环的例子,他们提出了两种主要的方法
std::vector<MyClass> vec;
for (auto &x : vec)
{
// x is a reference to an item of vec
// We can change vec's items by changing x
}
或
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
好。
当我们不需要更改vec
项时,IMO,示例建议使用第二个版本(按值)。为什么他们不建议const
引用的东西(至少我没有发现任何直接的建议):
for (auto const &x : vec) // <-- see const keyword
{
// x is a reference to an const item of vec
// We can not change vec's items by changing x
}
这样不是更好吗?当它是const
时,它不避免在每次迭代中重复复制吗?