본문 바로가기
C++

[C++] - map 사용법 정리 (STL)

by 개발 고양이 2023. 12. 30.

map이란?

map은 많이 쓰이는 STL 자료구조 중 하나로, (key, value) 쌍을 저장할 수 있는 클래스이다. key는 중복된 값을 가질 수 없다는 특징이 있으며, 원소가 삽입될때 자동으로 오름차순 정렬되어 검색, 삽입, 삭제에 유리하다. (O(logn)을 보장한다.)

 


1. 헤더파일

C++에서 map을 사용하기 위해서는 <map> 헤더파일을 include해줘야한다. 코드 상단에 아래와 같이 한 줄만 적어주면 된다.

#include <map>

2. map 선언하기

fruit 이라는 이름을 가지고 있고, key값은 string 자료형, value 값은 int 자료형을 가진 map을 선언하는 코드이다. 

map<string, int> fruit;

 


3. 원소 삽입

원소를 삽입할 때에는 insert() 함수를 이용한다. 

fruit.insert({ "apple",2000 });
fruit.insert({ "peach", 4500 });
fruit.insert({ "banana",3000 });
fruit.insert({ "orange",3500 });
fruit.insert({ "grape",4000 });

key값인 string을 기준으로 오름차순 정렬된다. -> apple, banana, grape, orange, peach 로 정렬되어 저장된다. 

 


4. 원소 삭제

  • 키를 입력받아 해당 키를 가진 pair를 삭제하기 - erase() 이용
fruit.erase("banana");	//banana를 키로 가지는 pair인 {"banana",3000}을 삭제
  • 특정 위치의 원소를 삭제하기
fruit.erase(fruit.begin()+1);	//map에서 2번째에 있는 원소를 삭제 (배열의 인덱스와 유사)
  • map에 들어있는 모든 원소를 한번에 삭제하여 map을 초기화 - clear() 이용
fruit.clear();	//fruit이라는 map에 들어있는 모든 원소를 한번에 삭제

 


5. 반복문을 이용한 순회

auto를 이용하면 편리하다. first는 key값을, second는 value 값을 나타낸다. 

for (auto it : fruit) {
	cout << it.first << " : ₩" << it.second << "\n";
}

위 코드를 실행시키면 map 안에 있는 모든 원소들을 순회하면서 출력한다.

key 값을 기준으로 자동으로 오름차순 정렬된 것을 확인할 수 있다. 

 

auto를 응용하면 다양하게 활용할 수 있다. 

(아래는 3500원 이상인 과일들만 출력할 수 있는 예시 코드이다.)

for (auto it : fruit) {
	if (it.second >= 3500)	// 만약 value값이 3500 이상이라면
		cout << it.first << "\n";	// key값을 출력하기
}

3500원 이상인 과일들만 출력되었다.