Menu
Coddy logo textTech

범위 기반 For 루프

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 15번째.

인덱스를 사용하는 전통적인 for loop는 vector를 순회하는 데 잘 작동하지만, C++는 더 우아한 해결책인 range-based for loop를 제공합니다. 이 현대적인 구문은 수동으로 인덱스를 관리할 필요를 없애고 코드를 더 깔끔하고 읽기 쉽게 만들어 줍니다.

범위 기반 for 루프는 반복의 세부 사항을 자동으로 처리합니다. 인덱스 변수를 관리하는 대신, 각 요소에 대해 수행할 작업을 지정하기만 하면 됩니다:

std::vector<std::string> names = {"Alice", "Bob", "Charlie"};

for (const std::string& name : names) {
    std::cout << name << std::endl;
}

loop는 전통적인 인덱스 기반 접근 방식과 정확히 같은 작업을 수행하지만, 구문은 훨씬 더 간단합니다. name 변수는 벡터의 각 요소 값을 한 번에 하나씩 자동으로 가집니다.

루프 선언에서 const std::string& name에 있는 & 기호를 눈치챘을 수 있습니다. 이 문맥에서 &는 이전에 보았을 수도 있는 "주소"를 의미하지 않습니다. 여기서는 name을 벡터의 각 요소를 복사하는 대신 각 요소를 직접 가리키는 참조(별칭)로 선언합니다. 이를 동일한 데이터 조각에 새 이름을 부여하는 것으로 생각할 수 있습니다. 요소에 포인터를 사용하는 것과 비슷하지만, 루프 본문 안에서 역참조할 필요가 없습니다.

const 키워드는 안전장치입니다. 루프 본문 안의 별칭을 통해 요소를 실수로 수정하지 못하게 합니다. 별칭 자체는 각 반복마다 계속해서 새로운 요소로 이동합니다. 일정하게 유지되는 것은 루프의 진행이 아니라 별칭을 통해 접근하는 내용입니다.

범위 기반 for loop는 더 읽기 쉬울 뿐만 아니라 더 안전합니다. 인덱스를 직접 관리하지 않으므로 인덱스 오류가 발생할 위험이 없습니다. 이 loop는 반복을 지원하는 모든 컨테이너에서 작동하므로 C++에서 데이터 컬렉션을 처리하기 위한 다목적 도구입니다.

challenge icon

챌린지

쉬움

city 이름 컬렉션을 처리하고 각 이름을 characters 수와 함께 표시하여 범위 기반 for loop을 보여 주는 프로그램을 Create하세요.

다음 입력이 제공됩니다:

  • cities의 number를 나타내는 정수 n
  • 그다음 city names를 나타내는 n개의 string

프로그램은 다음을 수행해야 합니다:

  1. cities라는 이름의 std::vector<std::string>를 Create하세요.
  2. push_back()을 using하여 n개의 city names each를 vector에 add하세요.
  3. 범위 기반 for loop을 using하여 vector를 iterate하세요.
  4. loop의 각 city에 대해 .length() method를 using하여 city name을 its length 뒤에 Print하세요.
  5. loop After, vector의 .size() method를 using하여 processed된 cities의 total number를 Print하세요.

다음 exact output format을 사용하세요:

City: [city name] (Length: [number of characters])\nCity: [city name] (Length: [number of characters])\n...\nTotal cities processed: [total count]

범위 기반 for loop은 vector의 each element를 iterate하기 위해 for (const std::string& city : cities) syntax를 사용해야 합니다. 각 city name의 characters 수를 얻으려면 city.length()를 사용하세요.

직접 해보기

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    // 도시의 개수를 읽습니다
    int n;
    cin >> n;
    
    // 도시 이름을 저장할 벡터를 생성합니다
    vector<string> cities;
    
    // 도시 이름을 읽고 벡터에 추가합니다
    for (int i = 0; i < n; i++) {
        string city;
        cin >> city;
        cities.push_back(city);
    }
    
    // TODO: 아래에 코드를 작성하세요
    // cities 벡터를 순회하기 위해 범위 기반 for 루프를 사용합니다
    // 지정된 형식을 사용하여 각 도시와 그 길이를 출력합니다
    // After the loop, print the total number of cities processed
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직과 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러