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
?
发布于 2018-03-20 09:07:15
如果你不想更改项目以及想要避免复印,那么auto const &
是正确的选择:
for (auto const &x : vec)
谁建议你使用auto &
是错误的。别理他们。
这里回顾一下:
auto x
何时处理副本。auto &x
何时想使用原始项目并可以修改它们。auto const &x
何时处理原始项目并且不会修改它们。https://stackoverflow.com/questions/-100007681
复制相似问题