일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- vscode
- 프레임워크와 라이브러리의 차이
- 백준
- correlation coefficient
- scanf
- 알고리즘 공부방법
- double ended queue
- Django란
- Django Nodejs 차이점
- string 함수
- 입/출력
- 입출력 패턴
- 시간복잡도
- 장고란
- 표준 입출력
- 매크로
- string 메소드
- 엑셀
- Django의 편의성
- 구조체와 클래스의 공통점 및 차이점
- 자료구조
- c++
- getline
- iOS14
- EOF
- 연결요소
- 2557
- 이분그래프
- UI한글변경
- k-eta
Archives
- Today
- Total
Storage Gonie
(24) C++ map헤더의 map 사용법 본문
반응형
용도 : pair가 그냥 두 자료형을 묶는 거라면, map은 왼쪽의 값을 key값으로 사용하고, 오른쪽의 값은 value값으로 사용한다.
key와 value를 가지는 노드를 생성해서 정렬된 '트리형태'로 저장해두어 탐색속도를 높인다.(key를 기준으로 정렬됨)
python의 딕셔너리와 비슷하나 딕셔너리는 해시테이블로 구성되고, map은 트리로 구성된다.(레드 블랙 트리가 사용됨)
index를 이용해 자료에 접근하는 배열과 달리 key값을 이용해 value에 접근할 수 있다.(key는 unique해야함)
중복된 key를 사용하여 입력하면 덮어씌어짐.
추가, 삽입, 삭제 시 자동정렬된다는 것도 알아두자.
아래 사용할 수 있는 함수를 보면 알겠지만 pair로 map을 구현했다는 것을 알 수 있다.
1. 헤더파일
#include<map>
2. 변수 선언
map<char, int> m; // 왼쪽은 key값의 type, 오른쪽은 value값의 type
3. key, vlaue 쌍을 추가하는 두 가지 방법
m['A'] = 1 ;
m['B'] = 3 ;
m.insert(make_pair('C', 2));
m.insert(pair<char, int>('D', 4));
4. 모든 데이터 출력
for (map<char, int>::iterator it = m.begin(); it != m.end(); it++) // auto 형으로도 사용 가능
cout << it->first << ' ' << it->second << '\n';
for (auto p : m)
cout << p.first << ' ' << p.second << '\n';
5. erase 함수
- key를 이용해서 한 개의 노드 삭제
m.erase('A');
6. clear 함수
- 맵의 모든 원소들 삭제
m.clear();
7. find 함수
- key를 이용해서 한 개의 value 읽기
- find 함수는 iterator를 반환하는데 키 값이 존재하지 않을 시 end()를 반환함
cout << m.find('A')->second;
map<char, int>::iterator it = m.find('A');
cout << it->second;
if (m.find('A') == m.end())
cout << "key 'A' doesn't exist" << "\n";
else
cout << "key 'A' exist" << "\n";
8. empty()
cout << m.empty(); // 맵이 비어있으면 true, 아니면 false를 반환
9. size()
cout << m.size(); // 맵 원소들의 수를 반환
10. count()
- key가 존재하면 1 아니면 0을 반환하게됨.
cout << m.count('A');
반응형
'알고리즘 > 문제해결을 위한 C++ 공부' 카테고리의 다른 글
(26) C++ for ( : ) 방식 사용법 (0) | 2019.05.24 |
---|---|
(25) C++ algorithm헤더의 nth_element 사용법 (0) | 2019.05.19 |
(23) C++ tuple헤더의 tuple 사용법 (0) | 2019.05.14 |
(22) C++ utility헤더의 pair 구조체 (0) | 2019.05.14 |
(21) C++ algorithm헤더의 min, max_element함수 (0) | 2019.05.08 |
Comments