【发布时间】:2017-02-28 12:28:14
【问题描述】:
如果我有这样的类型
std::vector<int> const value = ...
哪个是更好的解决方案?
样式 1:
for(auto v : value){
//do something
}
样式 2:
for(auto &&v : value){
//do something
}
样式 3:
for(auto const v : value){
//do something
}
它们都保持类型的常量。
样式 2 是最通用的解决方案。
据我所知,对于 int、double 等原始类型,按值传递比通过 const 引用传递更可取,所以如果我们知道向量的类型,我认为样式 1 和样式 3 比样式 2 更好原始类型。如果这个问题听起来很愚蠢,请原谅我。
【问题讨论】:
-
以什么方式更好?
-
对于
for(auto const v : value){,您的意思是for(const auto& v : value){吗?因为 const 值似乎没有多大意义。 -
认为这里也有合理的答案:stackoverflow.com/questions/29859796/c-auto-vs-auto 它也涵盖了
const auto&