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;
此程式碼之所以有效,是因為 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中文網其他相關文章!