C++의 범위 기반 for 루프

Jinku Hu 2023년10월12일
  1. 범위 기반for루프를 사용하여 C++에서std::map의 요소 인쇄
  2. 범위 기반for루프를 사용하여 C++에서struct의 멤버 인쇄
C++의 범위 기반 for 루프

이 기사에서는 C++에서 범위 기반for루프를 사용하는 방법에 대한 여러 방법을 보여줍니다.

범위 기반for루프를 사용하여 C++에서std::map의 요소 인쇄

범위 기반for루프는 일반for루프와 동일합니다. beginend멤버 함수가있는 배열 또는 기타 오브젝트를 탐색하는 데 사용할 수 있습니다. auto키워드와 요소에 대한 참조를 사용하여 액세스합니다. 이 경우itemstd::map유형의std::map의 단일 요소를 참조합니다. 따라서 키-값 쌍에 액세스하려면first/second키워드를 사용하여 액세스하려면 특수한 점 표기법이 필요합니다.

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  map<int, string> fruit_map = {{
                                    1,
                                    "Apple",
                                },
                                {
                                    2,
                                    "Banana",
                                },
                                {
                                    3,
                                    "Mango",
                                },
                                {
                                    4,
                                    "Cocoa",
                                }};

  for (auto &item : fruit_map) {
    cout << "[" << item.first << "," << item.second << "]\n";
  }

  return EXIT_SUCCESS;
}

출력:

[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]

또는 범위 기반 루프는 구조화 된 바인딩 표기법을 사용하여 요소에 액세스하고 코드 블록을 더 간결하게 만들 수 있습니다. 다음 예에서는std::map쌍에 액세스하기위한 이러한 바인딩 사용법을 보여줍니다.

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  map<int, string> fruit_map = {{
                                    1,
                                    "Apple",
                                },
                                {
                                    2,
                                    "Banana",
                                },
                                {
                                    3,
                                    "Mango",
                                },
                                {
                                    4,
                                    "Cocoa",
                                }};

  for (const auto& [key, val] : fruit_map) {
    cout << "[" << key << "," << val << "]\n";
  }

  return EXIT_SUCCESS;
}

출력:

[1,Apple]
[2,Banana]
[3,Mango]
[4,Cocoa]

범위 기반for루프를 사용하여 C++에서struct의 멤버 인쇄

구조적 바인딩은 순회 된 요소가 여러 데이터 멤버가있는 비교적 큰 구조를 나타낼 때 매우 유용 할 수 있습니다. 다음 예제 코드에서 볼 수 있듯이 이러한 멤버는 식별자 목록으로 선언 된 다음struct.member표기법없이 직접 참조됩니다. 대부분의 STL 컨테이너는 범위 기반for루프를 사용하여 순회 할 수 있습니다.

#include <iostream>
#include <list>

using std::cin;
using std::cout;
using std::endl;
using std::list;
using std::string;

struct Person {
  string name;
  string surname;
  int age;
};

int main() {
  list<Person> persons = {{"T", "M", 11},
                          {"R", "S", 23},
                          {"J", "R", 43},
                          {"A", "C", 60},
                          {"D", "C", 97}};

  for (const auto& [n, s, age] : persons) {
    cout << n << "." << s << " - " << age << " years old" << endl;
  }

  return EXIT_SUCCESS;
}

출력:

T.M - 11 years old
R.S - 23 years old
J.R - 43 years old
A.C - 60 years old
D.C - 97 years old
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Loop