【发布时间】:2020-12-02 08:55:13
【问题描述】:
用 ranged for(用于读取元素值)迭代原始类型容器的更好方法(性能)是什么 - 按 ref 或按值读取元素?
std::vector<int> v;
for (const auto e : v) { std::cout << e; }
或
for (const auto& e : v) { std::cout << e; }
有: Is it counter-productive to pass primitive types by reference?
想知道这 2 件事(通过 ref 和 value 传递和迭代)是否有某种关联。
另一个说明: 我确实认识到通过 ref、const-ref 和 value 访问以及复制值之间有什么区别 - 我只对只读方式的性能更好感兴趣。
【问题讨论】:
-
您可以随时查看生成的程序集。就我而言,它是一样的:godbolt.org/z/9snT1o.
-
看起来很有趣的方法!也想过,但还没试过。
-
如果您关心此类细节的性能,它是唯一的方法;)
标签: c++ primitive-types ranged-loops