C++로 사전 만들기
- 이니셜 라이저 목록 생성자를 사용하여 C++로 사전 만들기
- 기본 생성자를 사용하여 C++로 사전 만들기
-
copy
생성자를 사용하여 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 ]
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