>  기사  >  백엔드 개발  >  C 11 범위 기반 루프는 내부적으로 어떻게 작동합니까?

C 11 범위 기반 루프는 내부적으로 어떻게 작동합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 10:48:29327검색

How do C  11 Range-Based Loops Work Under the Hood?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.