[C++] STL Map

개요

C++ STL 중 하나인 Map의 사용방법을 정리해보자

맵은 Key와 Value를 가지고 있고 index 대신 Key로 값을 찾는 컨테이너이다.

 

Map 선언

#include <iostream>
#include <map>
using namespace std;

int main(){
	map<string, int> m1;
    
    map<int, string> m2 = {
    	{1, "first"},
        {2, "second"},
        {3, "third"}
    };
    
    map<int, vector<int>> m3;
    
    map<pair<int, int>, string> m4;

Map 복사

int main(){
	map<int, string> original;
    original[0] = "Apple";
    original[1] = "banana";
    
    map<int, string> copy1(original); //복사 생성자
    
    auto copy2 = original; //대입 연산자
    
    map<int, string> copy3;
    copy3.insert(original.begin(), original.end()); //insert 사용
}

Map의 자동 정렬

map은 넣은 순서에 상관없이 Value를 기준으로 정렬된다.

int main() {
    map<int, string> myMap;
    myMap[5] = "E";
    myMap[2] = "B";
    myMap[8] = "H";
    myMap[1] = "A";
    myMap[3] = "C";
    
    for (pair<int, string> p: myMap) //값이 정렬되어 출력
    	cout << p.first << ", " << p.second << "\n";

/* 출력 결과
1, A
2, B
3, C
5, E
8, H
*/

Map에 insert로 원소 추가

int main(){
	map<int, string> m1;
    
    m1.insert(make_pair(1, "Apple");
    m1.insert(make_pair(2, "banana");
    m1.insert(make_pair(3, "Cherry");
    
}

Map find

find로 특정 key의 value를 찾을 수 있다.

int main() {
	map<int, string> m1;
    m1[1] = "Apple";
    m1[2] = "Banana";
    
    map<int, string>::iterator it = m1.find(2); //Key로 찾는다.
    
    if (it == m1.end()) cout << "Not Found";
    else cout << it.first << ", " << it.second << "\n";
}

 

 

'C++' 카테고리의 다른 글

[C++] STL queue  (0) 2024.12.30
[C++]STL stack  (0) 2024.12.29
[C++]템플릿 사용 시 파일 분할  (0) 2024.12.23
[C++] 템플릿의 특수화  (0) 2024.12.23
[C++] unique_ptr, shared_ptr  (1) 2024.12.23