C++ - Map

구동엽
|2024. 8. 1. 16:12

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