Map이란?
- key와 value로 구성된 pair 객체를 원소로 하는 컨테이너
- key는 중복 안됨
- value는 중복이 가능하다.
- 특정 기준에 따라 원소들을 자동으로 정렬한다.
- 위치가 계속 변경되므로 우너소에 직접 접근이 불가능하다.
Map의 사용
- Map STL을 사용하기 위해서는 #include <map> 헤더파일을 포함해야한다.
#include <map>
- 선언 방법
- map< [key type], [value type], [compare] > [name]
#include <iostream>
#include <map>
using namespace std;
int main() {
//문자형 key, 정수형 value를 원소로하는 map1 생성
map<char, int> map1;
//정수형 key를 내림차순으로 저장하는 map2 생성
map<int, string, greater<int>> map2;
//초기화 값이 있는 map3 생성
map<string, string> map3 = {
{"apple", "사과"},
{"banana", "바나나"},
{"orange", "오랜지"}
};
}
멤버 함수
1. capacity & element access
함수 | 설명 |
map.size() | map의 크기 반환 |
map.empty() | 비어있으면 true, 그렇지 않으면 false 반환 |
map[key] | key에 해당하는 value 반환, key가 없을 경우 {key, 0}을 생성하고 0 반환 |
map.at(key) | key에 해당하는 value 반환, key가 없을 경우 error 발생 |
map<string, string> map3 = {
{"apple", "사과"},
{"banana", "바나나"},
{"orange", "오랜지"}
};
cout << "map3의 크기 : " << map3.size() << endl;
cout << "map3이 비어있나 ? : " << map3.empty() << endl;
cout << "apple의 value : " << map3["apple"] << endl;
map3의 크기 : 3
map3이 비어있나 ? : 0
apple의 value : 사과
2. iterators
함수 | 설명 |
map.begin() | 첫번째 원소를 가리키는 iterator |
map.end() | 마지막 원소의 다음을 가리키는 iterator |
map.rbegin() | 마지막 원소를 가리키는 iterator |
map.rend() | 첫번째 원소의 이전을 가르키는 iterator |
map<string, string> map3 = {
{"apple", "사과"},
{"banana", "바나나"},
{"orange", "오랜지"}
};
map<string, string>::iterator iter;
for (iter = map3.begin(); iter != map3.end(); iter++) {
cout << iter->first << " ";
cout << iter->second << " " << endl;
}
apple 사과
banana 바나나
orange 오랜지
3. modifiers
함수 | 설명 |
map[key] = value | pair(key, value)를 map에 삽입 |
map.insert(pair) | pair를 map에 삽입 |
map.erase(key) | key에 해당하는 pair를 제거 |
map.clear | 모든 원소 제거 |
map3["pumkin"] = "호박";
map3.insert(pair<string, string>("melon", "메론"));
map3.insert(pair<string, string>("mango", "망고"));
map3.erase("pumkin");
4. operations
함수 | 설명 |
map.find(key) | key에 해당하는 pair의 iterator를 반환, 없는 경우 map.end() 반환 |
map.count(key) | key에 해당하는 pair의 개수 반환 |
'🔊 Language > C++' 카테고리의 다른 글
C++ - 소켓 프로그래밍 함수 (0) | 2024.08.14 |
---|---|
C++ - TCP 소켓 통신을 사용해보자 (0) | 2024.08.14 |
C++ - STL 컨테이너 (0) | 2024.07.31 |
C++ - Stack (0) | 2024.07.29 |
C++ - Vector (0) | 2024.07.29 |