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