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:: :vector
ただし、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 中国語 Web サイトの他の関連記事を参照してください。