반응형

맵(Map)이란?


#include <map> 헤더 파일에 존재하는 STL이다.


key와 value로 이루어진 map은 대량의 데이터가 주어질 때 신속하게 검색할 수 있는 STL이다.


map은 레드-블랙 트리라는 Tree구조로 되어있으며, 데이터를 삽입할 때 정렬된 위치에 삽입된다.


사용 방식 


1. map<타입, 타입> 변수명 :: 선언 방식


2. 변수명이 m이라고 가정할 때


m[0] = 1과 m1 = { {0,1} }은 같은 의미


그 외에는 Vector STL과 같은 함수 방식을 이루고 있다.


3. 특이한 점이 있다면 map STL에서는 map<string, 타입> m;을 설정하면


m["abc"] = 값 이런식으로 [ ]사이에 string이 들어갈 수 있다.


이 점을 이용하면 다양한 내용을 쉽고 빠르게 찾아낼 수 있다.



알아둘 점


map을 이용할 때는 대량의 자료를 저장, 검색할 때 좋고, 정렬이 잦을 때 좋다.


하지만 적당한 배열 크기 내에서 이루어 질 수 있다면 map을 굳이 쓰지 않아도 된다.


 





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <cstdio>
#include <map>
 
using namespace std;
 
int main()
{
    map<intint> m1 = { {0,1}, {1,2}, {2,3}, {4,4} };
 
    cout << "m1.size() :: " << m1.size() << endl;
 
    map<intint> m2;
 
    m2[0= 1;
    m2[1= 2;
    m2[2= 3;
    m2[4= 5;
 
    cout << "m2.size() :: " << m2.size() << endl;
    cout << endl;
 
    // map은 0으로 초기화 됨을 알 수 있다.(지역 선언 시에도)
    for (int i = 0; i < 5; i++)
    {
        if (m1[i] == m2[i])
            cout << "m1[" << i << "]과(와) m2[" << i << "]는(은) " << m1[i] << "(으)로 값이 같습니다." << endl;
 
        else
            cout << "m1[" << i << "] :: " << m1[i] << " m2[" << i << "] :: " << m2[i] << "(으)로 값이 다릅니다." << endl;
    
        cout << endl;
    }
 
    cout << endl;
    cout << "iterator로 for문을 돌리는 방법" << endl;
    for (auto it = m2.begin(); it != m2.end(); it++)
        cout << (it->first) << ' ' << (it->second) << endl;
 
    cout << endl;
 
    // map은 string이 [ ] 사이에 들어갈 수 있다.
    map<string, string> m3;
 
    cout << "map은 string이 [ ] 사이에 들어갈 수 있다." << endl;
    cout << "m3[\"hello\"] = \"HELLO\";" << endl;
    cout << "m3[\"world\"] = \"WORLD\";" << endl;
    m3["hello"= "HELLO";
    m3["world"= "WORLD";
 
    cout << m3["hello"].at(0<< m3["hello"][1<< " " << m3["world"][3<< m3["world"].at(4<< endl;
 
 
 
    return 0;
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus





반응형