반응형
맵(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<int, int> m1 = { {0,1}, {1,2}, {2,3}, {4,4} }; cout << "m1.size() :: " << m1.size() << endl; map<int, int> 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 |
반응형
'Applied > 자료구조' 카테고리의 다른 글
세그먼트 트리(Segment Tree) (35) | 2017.03.08 |
---|---|
배열을 이용한 이진 탐색 트리(Binary Search Tree) 소스 코드 (0) | 2017.03.02 |
튜플(Tuple) STL 사용 방법 (2) | 2017.02.14 |
페어(Pair) STL 사용 방법 (0) | 2017.02.14 |
비트 연산자 및 비트 연산 응용 방법 (0) | 2017.02.11 |