STL(人)最近关于隐式汽车和人的提议在基于循环的范围中让我想知道迭代和修改序列元素的正确方法是什么
for(auto&& elem: cont)
{
}
或
for(auto& elem: cont)
{
}
答案 0 :(得分:1)
两者都是等价的;在第一种情况下,“引用折叠”表示elem
的类型成为左值引用,因为其初始化是左值。我会说第二个更“适当”,因为它表达了实际发生的事情。
(除非正如副本的答案所指出的那样,容器会像std::vector<bool>
那样打破容器需求,而reference
类型实际上并不是引用类型。在这种情况下,首先将elem
绑定到该类型的临时,而第二个将不编译。)
答案 1 :(得分:0)
没有“适当”的东西;这取决于你正在迭代什么以及你想对每个迭代做什么。