我觉得这应该已经有答案了,但我找不到。
我有一个shared_ptrs向量:
vector<shared_ptr<X>> v;
我不想对所有权做任何事情(例如复制 smart_ptrs),我只想检查一下元素。有什么理由让我不应该使用引用(性能或其他方面,例如使用引用可能会阻止某些编译器优化或者使用引用会让我遇到任何麻烦)?
for (auto const& x : v)
与:
for (auto x : v)
为了避免这个问题得不到解答,我自己来回答。
所以看起来没有理由不使用引用(没有陷阱或与性能相关的问题)。具体来说,常量引用。
另请阅读 Andrej Podzimek 对我的问题的评论。