C++로 사전 만들기

Jinku Hu 2023년10월12일
  1. 이니셜 라이저 목록 생성자를 사용하여 C++로 사전 만들기
  2. 기본 생성자를 사용하여 C++로 사전 만들기
  3. copy 생성자를 사용하여 C++로 사전 만들기
  4. 범위 기반 생성자를 사용하여 C++로 사전 만들기
C++로 사전 만들기

이 기사에서는 C++로 사전을 만드는 방법을 소개합니다.

이니셜 라이저 목록 생성자를 사용하여 C++로 사전 만들기

C++ 표준 컨테이너 라이브러리에서 사전의 이름은 std::map이며 고유 키로 정렬 된 키-값 쌍을 구현합니다. 검색, 제거 및 삽입 쌍과 같은 map요소에 대한 작업은 로그 복잡성을가집니다. 이 메서드는 중괄호를 사용하여 리터럴 값으로map 객체를 초기화합니다. 다음 코드 예제에 표시된 것처럼 각 요소 쌍은 쉼표로 구분됩니다.

#include <iostream>
#include <map>

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

template <typename Map>
void PrintMap(Map& m) {
  cout << "[ ";
  for (auto& item : m) {
    cout << item.first << ":" << item.second << " ";
  }
  cout << "]\n";
}

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

  cout << "map1 - ";
  PrintMap(map1);
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

map1 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]

기본 생성자를 사용하여 C++로 사전 만들기

또는 주어진 매개 변수로map 유형 객체를 선언 한 다음 별도의 문을 사용하여 각 키-값 쌍을 초기화 할 수 있습니다. 이 샘플에서는int 키와string-s 값이있는 맵을 보여줍니다. 이러한 명령문을 항상 루프에 넣거나 사용자 입력에서 값을 가져 오면 실제 응용 프로그램 시나리오와 더 잘 일치합니다.

#include <iostream>
#include <map>

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

template <typename Map>
void PrintMap(Map& m) {
  cout << "[ ";
  for (auto& item : m) {
    cout << item.first << ":" << item.second << " ";
  }
  cout << "]\n";
}

int main() {
  map<int, string> map2;
  map2[1] = "Banana";
  map2[2] = "Mango";
  map2[3] = "Cocoa";
  map2[4] = "Raspberry";

  cout << "map2 - ";
  PrintMap(map2);
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

map2 - [ 1:Banana 2:Mango 3:Cocoa 4:Raspberry ]

copy 생성자를 사용하여 C++로 사전 만들기

새로운map 객체를 만드는 또 다른 해결책은copy 생성자를 사용하는 것입니다.이 생성자는 다른 기존map 변수를 인수로 사용하고 키-값 쌍을 새로 초기화 된 객체에 복사합니다. 이 메서드는 기존map 객체를 이동하지 않으며 나중에 프로그램 실행 중에 다시 사용할 수 있습니다.

#include <iostream>
#include <map>

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

template <typename Map>
void PrintMap(Map& m) {
  cout << "[ ";
  for (auto& item : m) {
    cout << item.first << ":" << item.second << " ";
  }
  cout << "]\n";
}

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

  map<int, string> map3(map1);

  cout << "map3 - ";
  PrintMap(map3);
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

map3 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]

범위 기반 생성자를 사용하여 C++로 사전 만들기

범위 기반 생성자는 이전 메서드의 또 다른 대안입니다. 이 솔루션은 일부 기존map 객체의 하위 집합 키-값 쌍으로 새map 변수를 초기화하는 데 사용할 수 있습니다. 이 예에서는find 메소드를 사용하여 범위의 첫 번째 키-값 쌍을 지정합니다. 결과적으로 새로운map2 변수에는 키-값2에서 시작하여map1 객체의 마지막 요소까지의 쌍이 포함됩니다.

#include <iostream>
#include <map>

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

template <typename Map>
void PrintMap(Map& m) {
  cout << "[ ";
  for (auto& item : m) {
    cout << item.first << ":" << item.second << " ";
  }
  cout << "]\n";
}

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

  map<int, string> map4(map1.find(2), map1.end());

  cout << "map4 - ";
  PrintMap(map4);
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

map4 - [ 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
작가: 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