본문 바로가기
프로그래밍 언어/C++

C++ STL Map 사용법

by Jo_Wick 2023. 4. 14.
반응형

Map이란?

map은 각 노드가 key와 value로 이루어진 트리이다. 중복을 허용하지 않는게 특징이다.

그리고 map은 검색, 삽입, 삭제 등이 O(logn)인 레드블랙트리로 구성되어 있다.

 

map<key, value> map1;

 

map은 기본적으로 key를 기준으로 오름차순으로 정렬을 한다.

만약 내림차순으로 사용하고 싶다면 map<int, int, greater> map1;로 사용하면 된다.

 

Map 삽입

그리고 map을 삽입할 때 가장 중요한 점은 pair 객체로 넣어야 한다는 것이다.

 

map1.insert(pair<int, int>(1, 2));

 

 

Map 검색

map은 기본적으로 데이터를 찾을 때 iterator를 사용한다.

그래서 map의 멤버함수인 find를 사용했을 때 만약 찾는 값이 존재하면 그 값의 주소를 반환하고 그렇지 않다면 map.end()를 반환한다.

if(map1.find(1) != map1.end()){
	cout << "find\n";
}

else{
	cout << "not find\n";
}

 

 

반복문을 사용할때

기본적으로 데이터에 접근할 때 iterator를 사용한다고 했기 때문에 iterator를 사용해야 한다.

for(auto iter = map1.begin(); iter != map1.end(); iter++){
	cout << iter->first << ' ' << iter->second << '\n';
}

operator []를 사용해도 접근이 가능하긴 하다.

// 단 key 값이 정수형이라면!!!
for(register int i = 0; i < 10; i++){
	map1.insert(pair<int, int>(i, i));
}

for(register int i = 0; i < 10; i++){
	cout << map1[i] << '\n';
}

Map 삭제

map.clear()를 통해 모든 값을 지울 수 있고,

map.erase(iter) iter이 가리키는 원소를 지운다.

map.erase(start, end) start부터 end까지의 원소들을 지운다.

map.erase("Wick") key값을 기준으로 삭제 할 수도 있다.

 

 

23/06/28 수정

map은 분명 쓰기 편하지만 Hash가 훨씬 쓰기 쉽고 빠르다...

반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

C++ 연산자 우선 순위  (0) 2025.09.21
C++ 특정 문자 사이 값 입력받기  (0) 2025.09.20
C++ 지수 표기법  (0) 2025.09.20
C++ 소수점 출력  (0) 2025.09.20
C++ 표준 스트림  (0) 2025.09.19

댓글