在 C 中導致錯誤? " />
在C 中,基於範圍的for 循環提供了一種迭代容器中元素的便捷方法。但是,當與布林值容器一起使用時,某些行為可能看起來令人驚訝。成功迭代了intVector 並且但是,第二個循環會導致以下錯誤:
原因發生此錯誤是因為std::vector<code class="cpp">std::vector<int> intVector(10); for (auto& i : intVector) std::cout << i; std::vector<bool> boolVector(10); for (auto& i : boolVector) std::cout << i;</code>透過使用auto&&,如果給定true 布林值引用,編譯器將正確折疊為左值引用,或者如果給定代理引用,則綁定並保持臨時代理處於活動狀態。
以上是為什麼在 C 中使用基於範圍的 For 迴圈和 std::vector