【问题标题】:Is auto& or auto&& prefered for modifying a range with range based foor loop? [duplicate]auto& vs auto&& 是否更适合使用基于范围的 foo 循环修改范围? [复制]
【发布时间】:2014-03-13 23:04:39
【问题描述】:

STL(person) 最近关于基于 for 循环的范围内隐式 auto&& 的提议让我想知道迭代和修改序列元素的正确方法是什么

for(auto&& elem: cont)
{
}

for(auto& elem: cont)
{
}

【问题讨论】:

标签: c++ foreach


【解决方案1】:

没有所谓的“适当”;这取决于您要迭代的内容以及您想对每个迭代执行什么操作。

【讨论】:

    【解决方案2】:

    两者是等价的;在第一种情况下,“引用折叠”意味着elem 的类型变成了一个左值 引用,因为它的初始化器是一个左值。我会说第二个更“恰当”,因为它表达了实际发生的事情。

    (除非,正如重复的答案中所指出的那样,容器打破了容器要求,就像 std::vector<bool> 所做的那样,reference 类型实际上不是引用类型。在这种情况下,第一个将绑定 @ 987654327@ 到该类型的临时,而第二个不会编译。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多