让我们考虑下面的例子(当然应该用 代替std::accumulate
):
#include <vector>
auto sum(std::vector<int> const& numbers) -> int
{
auto sum = 0;
for(auto /*const, const&, &&, [nothing]*/ i : numbers) { sum += i; }
return sum;
}
如您所见,有许多不同的方法可以将基于范围的 for 循环用于小类型。请注意,所有这些变体在编译器资源管理器中使用gcc
.
我经常看到auto i
在第一种情况和auto const& i
第二种情况下使用的建议。
但我们正在与编译器而不是这里的人交谈。有趣的信息是变量只是输入。这不是由 表示的auto i
。
那么在只需要读取输入的任何情况下,使用auto const& i
而不是有任何性能劣势吗?auto i