1) Map이란?
map은 각 노드가 key와 value 쌍으로 이루어진 트리입니다. 특히, 중복을 허용하지 않습니다.
따라서 map은 first, second가 있는 pair 객체로 저장되는 데 first- key로 second- value로 저장됩니다.
C++의 map의 내부 구현은 검색, 삽입, 삭제가 O(logn) 인 레드블랙트리로 구성되어 있습니다.
2) Map 기본 형태
map <key, value> map1;
3) Map 정렬
map은 자료를 저장할때 내부에서 자동으로 정렬합니다.
map은 key를 기준으로 정렬하며 오름차순으로 정렬합니다.
만약 내림차순으로 정렬하고 싶은 경우와 같이 사용하면 됩니다.
map <int, int, greater> map1;
(만약 다른 방법으로 int데이터를 내림차순으로 정렬하고 싶을 경우,
데이터에 -(마이너스)를 붙여 삽입하여 처리하면 내림차순으로 정렬됩니다.)
3) Map 사용방법
1) 헤더 포함
map을 사용하려면 헤더에 #include <map> 처리를 해야 합니다.
2) map 선언하기
map의 기본 구조는 map <key type, value type> 이름입니다.
map<string, int> m;
3) map에 찾고자 하는 데이터가 있는 지 확인하기(search)
map에서 데이터를 찾을 때는 iterator을 사용합니다.
데이터를 끝까지 찾지 못했을 경우, iterator는 map.end()를 반환합니다.
if (m.find("Alice") != m.end()) {
cout << "find" << endl;
}
else {
cout << "not find" << endl;
}
4) map에 데이터 삽입
map은 중복을 허용하지 않습니다. insert를 수행할때, key가 중복되면 insert가 수행되지 않습니다.
중복되면 그것은 key의 역할을 제대로 하지 않습니다.
m.insert({"Cam", 300});
5) 반복문 데이터 접근 (first, second)
- 인덱스 기반 반복문 활용한 예제
: 인덱스 기반은 iterator을 활용하여 begin()부터 end()까지 찾습니다.
//인덱스기반
for (auto iter = m.begin() ; iter != m.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
cout << endl;
- 범위 기반 반복문 활용한 예제
for (auto iter : m) {
cout << iter.first << " " << iter.second << endl;
}
6) map에서 삭제하기
map에서 데이터를 삭제하기 위해 활용할 함수는 erase와 clear입니다
1. 특정 위치의 요소 삭제
m.erase(m.begin()+2);
2. key값을 기준으로 요소 삭제
m.erase("Alice");
3. map의 모든 요소 삭제
- erase 함수로 모든 요소 삭제하기 (map의 begin부터 end까지)
m.erase(m.begin(), m.end());
- clear 함수로 모든 요소 삭제하기
m.clear();
출처: https://life-with-coding.tistory.com/305 [코딩젤리]
'야미스터디 > Etc' 카테고리의 다른 글
[C++ STL] priority_queue (우선순위 큐) (0) | 2022.01.03 |
---|---|
01장 파이썬이란 무엇인가? (0) | 2021.12.26 |
[C++ STL] map iterator(반복자) (0) | 2021.12.24 |
[파이썬] 딕셔너리 자료형 (0) | 2021.12.24 |
[TOEIC] 토익 공부 길잡이 - RC, LC 문제풀이법 (0) | 2021.06.28 |
댓글