Range-for-Loops with std::vector
在 C 中,range-for-loops 通常用于迭代通过 STL 容器。但是,尝试将这种方法与 std::vector
考虑以下代码片段:
<code class="cpp">std::vector<int> intVector(10); for(auto& i : intVector) std::cout << i;</code>
此代码之所以有效,是因为 std: :向量
但是,如果我们尝试使用 std::vector
<code class="cpp">std::vector<bool> boolVector(10); for(auto& i : boolVector) std::cout << i;</code>
这是因为 std::vector
代理是无法绑定到左值引用的临时对象。这就是为什么我们不能在上面的 range-for 循环中使用 auto& 的原因。相反,我们需要使用 auto&&,如果给定了一个左值引用,它将正确绑定到左值引用,或者如果给定了一个代理,它将保持临时代理处于活动状态。这是更正后的代码:
<code class="cpp">for(auto&& i : boolVector) std::cout << i;</code>
以上是为什么我不能在 Range-for-Loop 中将 `auto&` 与 `std::vector` 一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!