C++에서 맵을 반복하는 방법

Jinku Hu 2023년10월12일
  1. while 루프를 사용하여std::map 요소 반복
  2. 전통적인for 루프를 사용하여std::map 요소 반복
  3. 범위 기반for 루프를 사용하여std::map 요소 반복
  4. 범위 기반for 루프를 사용하여std::map 키-값 쌍 반복
C++에서 맵을 반복하는 방법

이 기사에서는 여러 메서드를 사용하여 C++에서map을 반복하는 방법을 설명합니다.

while 루프를 사용하여std::map 요소 반복

먼저 임시 맵 구조 tempMap을 정의하고 임의의 키/값 쌍으로 채 웁니다.이를 stdout에서 출력하여 제안 된 솔루션을 더 잘 보여줍니다.

#include <iostream>
#include <map>

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

int main() {
  map<int, string> tempMap = {{
                                  1,
                                  "Apple",
                              },
                              {
                                  2,
                                  "Banana",
                              },
                              {
                                  3,
                                  "Mango",
                              },
                              {
                                  4,
                                  "Raspberry",
                              },
                              {
                                  5,
                                  "Blackberry",
                              },
                              {
                                  6,
                                  "Cocoa",
                              }};

  auto iter = tempMap.begin();
  while (iter != tempMap.end()) {
    cout << "[" << iter->first << "," << iter->second << "]\n";
    ++iter;
  }
  cout << endl;
  return 0;
}

출력:

[1,Apple]
[2,Banana]
[3,Mango]
[4,Raspberry]
[5,Blackberry]
[6,Cocoa]

이 메서드는 가독성을 위해 권장되므로std::map 반복자를 선언하기 위해auto 유형 지정자를 사용합니다. 명시 적으로 지정할 수있는map<int, string>::iterator입니다.

전통적인for 루프를 사용하여std::map 요소 반복

이제 가독성이 가장 나쁜 기존의 for반복으로 동일한 루프를 구현해 보겠습니다.

#include <iostream>
#include <map>

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

int main() {
  map<int, string> tempMap = {{
                                  1,
                                  "Apple",
                              },
                              {
                                  2,
                                  "Banana",
                              },
                              {
                                  3,
                                  "Mango",
                              },
                              {
                                  4,
                                  "Raspberry",
                              },
                              {
                                  5,
                                  "Blackberry",
                              },
                              {
                                  6,
                                  "Cocoa",
                              }};

  for (auto iter = tempMap.begin(); iter != tempMap.end(); ++iter) {
    cout << "[" << iter->first << "," << iter->second << "]\n";
  }
  cout << endl;
  return 0;
}

범위 기반for 루프를 사용하여std::map 요소 반복

범위 기반 루프는 한동안 C++ 프로그래머에게 일반적인 선택이었습니다. 컴파일러가 C++ 11 버전을 지원하는 경우 기존의 번거로운 루프에 대해 더 이상 생각하지 말고 다음 예제의 우아함을 높이 평가해야합니다.

#include <iostream>
#include <map>

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

int main() {
  map<int, string> tempMap = {{
                                  1,
                                  "Apple",
                              },
                              {
                                  2,
                                  "Banana",
                              },
                              {
                                  3,
                                  "Mango",
                              },
                              {
                                  4,
                                  "Raspberry",
                              },
                              {
                                  5,
                                  "Blackberry",
                              },
                              {
                                  6,
                                  "Cocoa",
                              }};

  for (const auto &item : tempMap) {
    cout << "[" << item.first << "," << item.second << "]\n";
  }
  cout << endl;
  return 0;
}

범위 기반for 루프를 사용하여std::map 키-값 쌍 반복

이 버전은 C++ 17 표준 이후로 정의되어 연관 컨테이너에서보다 유연한 반복을 제공합니다. 이전 예제에 비해이 방법의 주요 장점은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> tempMap = {{
                                  1,
                                  "Apple",
                              },
                              {
                                  2,
                                  "Banana",
                              },
                              {
                                  3,
                                  "Mango",
                              },
                              {
                                  4,
                                  "Raspberry",
                              },
                              {
                                  5,
                                  "Blackberry",
                              },
                              {
                                  6,
                                  "Cocoa",
                              }};

  for (const auto& [key, value] : tempMap) {
    cout << "[" << key << "," << value << "]\n";
  }
  cout << endl;
  return 0;
}
작가: 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++ Map