Range-for-Loop 및 std::Vector
C에서 범위 기반 for 루프는 반복을 단순화합니다. 컨테이너. 그러나 std::Vector
다음 코드 조각을 고려하세요.
<code class="cpp">std::vector<int> intVector(10); for(auto& i : intVector) std::cout << i;</code>
이 코드 intVector 컬렉션을 반복하고 각 요소를 인쇄합니다. 그러나 intVector를 std::Vector
<code class="cpp">std::vector<bool> boolVector(10); for(auto& i : boolVector) std::cout << i;</code>
수정된 코드로 인해 오류가 발생합니다.
error: invalid initialization of non-const reference of type ‘std::_Bit_reference&’ from an rvalue of type ‘std::_Bit_iterator::reference {aka std::_Bit_reference}’
기본 메커니즘:
std::로 인해 불일치가 발생합니다. 벡터
std::Vector
해결책:
이 문제를 해결하려면 범위에서 auto&&&를 사용하세요. 기반 루프:
<code class="cpp">for(auto&& i : boolVector) std::cout << i;</code>
auto&&& 구문은 반복자 참조 유형을 확인합니다. lvalue 참조인 경우 동일하게 유지됩니다. 그렇지 않으면 임시 프록시에 바인딩하고 보존하여 코드가 올바르게 실행될 수 있도록 합니다.
위 내용은 `std::Vector`에서 범위 기반 For 루프를 사용하면 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!