>백엔드 개발 >C++ >C 11에서 범위 기반 For 루프를 효과적으로 사용하려면 어떻게 해야 합니까?

C 11에서 범위 기반 For 루프를 효과적으로 사용하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-21 08:13:09844검색

How Do I Effectively Use Range-Based For Loops in C  11?

C 11의 범위 기반 for 루프

구문 및 사용법

C 11에서는 간결하고 표현적인 방법으로 범위 기반 for 루프를 도입했습니다. 컨테이너를 반복합니다. 구문은 다음과 같습니다.

for (range_declaration : container) {
  // body of the loop
}

여기서:

  • range_declaration은 컨테이너의 각 요소를 보유하는 변수를 선언합니다.
  • container는 반복하려는 컨테이너입니다. 이상.

참고로 캡쳐 또는 값

range_declaration의 변수는 다음 구문을 사용하여 참조 또는 값으로 캡처할 수 있습니다.

  • auto는 값으로 요소를 캡처합니다.
  • auto&는 요소를 캡처합니다. const가 아닌 참조로.
  • const auto&는 const로 요소를 캡처합니다.

수정할 필요가 없는 요소를 관찰하려면 const auto&를 사용해야 합니다. 이렇게 하면 불필요한 복사본이 방지되고 원본 요소가 수정되지 않습니다.

요소를 수정하려면 auto&를 사용하세요.

프록시 반복자(예: std::Vector), 요소를 캡처하려면 auto&&를 사용해야 합니다. value.

범위 기반 For 사용 지침

범위 기반 for 사용 시 다음 지침을 고려하십시오.

  • 관찰 요소의 경우:

      for (const auto& elem : 컨테이너) (const로 캡처 참조)
    • 요소를 복사하기 쉬운 경우(예: 정수) for (auto elem : 컨테이너)(값으로 캡처)를 사용할 수 있습니다.
  • 요소 수정:

      for (auto& elem : 컨테이너) (캡처 기준: 비-상수 참조)
    • 프록시 반복자(예: std::Vector)의 경우 for (auto&& elem : 컨테이너)를 사용합니다(&&로 캡처).
일반 코드 고려 사항

일반 코드에서는 반복되는 요소의 유형을 모르는 경우 요소를 관찰하려면 다음을 사용하세요.

    for (const auto& elem : 컨테이너)
  • for (auto&& elem : 컨테이너) for 요소 수정(일반 및 프록시 반복자 모두에서 작동)

위 내용은 C 11에서 범위 기반 For 루프를 효과적으로 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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