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값을 출력하기
}
'C++' 카테고리의 다른 글
[C++] - vector 사용법 정리 (STL) (1) | 2024.01.06 |
---|---|
[C++] - sort()함수 사용법 정리(STL) (1) | 2024.01.02 |
[C++] - STL(표준 템플릿 라이브러리)에 대하여 (1) | 2023.12.28 |
[C/C++] - 입력 개수를 모를때 (EOF까지 입력받기) (0) | 2023.12.13 |
[C++] - namespace와 using 사용법 (std:: 생략하기) (0) | 2023.12.12 |