为了避免复制对象,通常做得更好
for(auto &x : container){...}
大于
for(auto x : container){...}
但是在常规C ++中,引用是非const的,它允许修改容器。因此,我们是否应该按照以下方式执行以下操作,就像我们在不修改数据时制定方法const
一样?
for(const auto &x : container){...}
答案 0 :(得分:4)
这取决于您在for
语句正文中要执行的操作。
auto const&
。 auto&&
。我更喜欢auto&
,因为它处理取消引用容器的迭代器产生右值(vector<bool>
)的情况。还有proposal允许
for(x : container) { ... }
这将是一个不那么详细的
形式for(auto&& x : container) { ... }