C 11 범위 기반 루프의 뒷이야기
범위 기반 루프는 컬렉션의 요소를 반복하기 위한 간결한 구문을 제공합니다. 그러나 내부 동작이 바로 드러나지 않을 수도 있습니다.
변수 초기화
루프 변수(이 경우 x)는 한 번만 초기화되는 것처럼 보일 수 있지만, 현실은 다릅니다. 다음과 같은 범위 기반 루프에서:
<code class="cpp">for (const int x : vec) { cout << x << endl; }</code>
컴파일러는 각 반복마다 새로운 지역 변수 x를 생성합니다. x를 vec 벡터의 다음 요소 값으로 초기화합니다.
Const 변수
const로 선언되었음에도 불구하고 x 변수는 각 반복에서 변경되는 것처럼 보일 수 있습니다. 같은 변수가 아니기 때문입니다. 새로 생성된 각 x는 vec의 다음 요소에 할당되어 동일한 변수가 수정되는 듯한 착각을 줍니다.
구현 세부 정보
범위 기반 루프가 구현됩니다. 컬렉션의 요소에 대한 액세스를 제공하는 객체인 반복자를 사용합니다. 위 코드에서 vec에는 Begin() 및 end() 함수에 의해 반환된 반복자가 있습니다. 반복자는 요소를 단계별로 실행하는 데 사용되며 x는 반복자가 가리키는 값에 할당됩니다.
추가 참고 사항
위 내용은 C 11 범위 기반 루프는 내부적으로 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!