> 백엔드 개발 > C++ > C 11의 범위 기반 For 루프에 대한 올바른 구문을 선택하는 방법은 무엇입니까?

C 11의 범위 기반 For 루프에 대한 올바른 구문을 선택하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-19 17:38:13
원래의
875명이 탐색했습니다.

How to Choose the Correct Syntax for C  11's Range-Based For Loop?

C 11의 범위 기반을 사용하는 올바른 방법은 무엇입니까?

C 11은 범위를 사용하여 컨테이너를 반복하는 새로운 방법을 도입했습니다. -based for는 기존 for 루프보다 더 간결하고 읽기 쉽습니다. 하지만 올바르게 사용하려면 몇 가지 규칙을 따라야 합니다.

범위 기반 for를 사용할 때는 반복하려는 변수의 유형을 지정하고 그 뒤에 콜론(:)을 지정한 다음 반복하려는 컨테이너입니다. 예:

for (int i : {1, 2, 3}) {
    // Do something with i
}

// Iterate over a vector of strings
for (string s : my_vector) {
    // Do something with s
}
로그인 후 복사

for 문에 지정하는 변수는 반복할 때 컨테이너의 각 요소 값이 자동으로 할당됩니다. 이렇게 하면 데이터 모음을 반복하는 것이 매우 편리해집니다.

어떤 구문을 사용해야 합니까? for(auto elem : 컨테이너), for(auto& elem : 컨테이너) 또는 for(const auto& elem : 컨테이너)?

사용해야 하는 구문은 요소를 수정할지 여부에 따라 달라집니다. 컬렉션이 있든 없든. 요소를 수정하려면 for (auto& elem : 컨테이너)를 사용해야 합니다. 요소를 수정하지 않으려면 for(auto elem : 컨테이너) 또는 for(const auto& elem : 컨테이너)를 사용할 수 있습니다.

for 문에서 auto를 사용하면 컴파일러가 자동으로 변수의 유형을 추론합니다. 이는 편리하지만 컴파일러가 유형을 올바르게 추론할 수 없는 경우 오류가 발생할 수 있습니다. 변수의 유형이 무엇인지 확실하지 않은 경우 명시적으로 지정하는 것이 더 안전합니다.

for 문에서 const를 사용하면 루프 내에서 변수를 수정할 수 없습니다. 이는 컬렉션의 요소가 실수로 변경되지 않도록 하려는 경우에 유용합니다.

예:

// Modify the elements in a vector
vector<int> my_vector = {1, 2, 3, 4, 5};

for (auto& elem : my_vector) {
    elem *= 2;
}

// Do something with the modified vector
for (auto elem : my_vector) {
    cout << elem << endl;
}

// Iterate over a vector of const strings
const vector<string> my_const_vector = {"Hello", "World", "!"};

for (const auto& elem : my_const_vector) {
    // Do something with elem
    cout << elem << endl;
}
로그인 후 복사

첫 번째 예에서는 벡터의 요소에 2를 곱합니다. 두 번째 예에서는 문자열의 const 벡터를 반복하고 각 요소를 인쇄합니다. const 벡터의 요소는 수정할 수 없습니다.

결론:

범위 기반 for는 코드를 더욱 간결하고 쉽게 만들 수 있는 강력한 도구입니다. 읽다. 위에 설명된 규칙을 따르면 범위 기반을 사용하여 데이터 컬렉션을 올바르게 반복할 수 있습니다.

위 내용은 C 11의 범위 기반 For 루프에 대한 올바른 구문을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿