Range-for-Loops 및 std::Vector
표준 라이브러리 컨테이너와 함께 범위 기반 for 루프를 사용하는 경우 반복자의 데이터 유형은 종종 카운터 변수의 데이터 유형을 나타냅니다. 그러나 std::Vector
첫 번째 예에서는
<code class="cpp">std::vector<int> intVector(10); for (auto& i : intVector) std::cout << i;
std::Vector< ;정수> 정수를 포함하므로 반복자 유형은 std::Vector 이제 두 번째 예를 고려해 보겠습니다. 여기서 std는 다음과 같습니다. :벡터 해결책은 auto&&를 사용하는 것입니다. 이는 lvalue 참조인 경우 lvalue 참조에 바인딩하고, 임시인 경우 rvalue의 임시 복사본을 만듭니다. 이러한 수정을 통해 코드는 예상대로 boolVector의 내용을 출력합니다. 위 내용은 범위 기반 For 루프가 `std::Vector`와 다르게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!<code class="cpp">std::vector<bool> boolVector(10);
for (auto& i : boolVector)
std::cout << i;</code>
<code class="text">invalid initialization of non-const reference of type ‘std::_Bit_reference&’ from an rvalue of type ‘std::_Bit_iterator::reference {aka std::_Bit_reference}’</code>
<code class="cpp">for (auto&& i : boolVector)
std::cout << i;</code>