[STL] Unordered_map, multimap 생성, 삽입, 삭제 등 사용법

Notepad96

·

2020. 11. 8. 10:59

300x250

 

 

 
 

1. unordered_map, _multimap

 

unordered_map은 set과 unordered_set의 관계처럼 저장하는 원소들을 어느 정렬 방식(오름차순, 내림차순)에 따라 정렬이 되는 것이 아니라 일련의 삽입하는 순서를 유지하고자 할 때 사용할 수 있다.

 

 

그 외에 멤버 함수나 사용방법 들은 map과 multimap 동일하다.

 
 

unordered_map과 unordered_multimap을 사용하기 위해서는 unordered_map을 include 하여야만 한다.

 
 
 

2. 코 드

환경 : Visual Studio 2019
 
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main() {
	unordered_map<int, string> umap;
	unordered_multimap<int, string> ummap;

	umap[4] = "a";
	umap[3] = "b";
	umap[1] = "c";
	umap[2] = "d";
	umap[5] = "e";
	umap[1] = "f";

	for (auto i : umap) {
		cout << i.first << ":" << i.second << " ";
	}
	cout << "\n";

	ummap.insert(make_pair(4, "a"));
	ummap.insert(make_pair(3, "b"));
	ummap.insert(make_pair(1, "c"));
	ummap.insert(make_pair(2, "d"));
	ummap.insert(make_pair(5, "e"));
	ummap.insert(make_pair(1, "f"));

	for (auto i : ummap) {
		cout << i.first << ":" << i.second << " ";
	}
	cout << "\n";
	
	// key가 1인 원소들만 루프
	for (auto it = ummap.lower_bound(1); it != ummap.upper_bound(1); it++) {
		cout << it->first << ":" << it->second << " ";
	}
	cout << "\n";

	return 0;
}
 
 
결과

 

- unordered_map은 map처럼 [] 연산자를 사용하여서 삽입할 수 있으며 unordered_multimap은 mutlimap처럼 [] 연산자를 사용하여서 삽입할 수 없다.

 
 

- unordered_multimap의 결과를 보면 unordered_multiset처럼 중복된 원소 삽입 시 기존의 중복되는 원소 뒤에 삽입되는 것을 확인할 수 있다.

 
 

- 특정 key를 같은 원소만 탐색하고 싶을 경우 multimap에서 사용하였던 것처럼 lower_bound, upper_bound를 사용하면 가능하다.

 
 
 
 
 


3. 참 조

 
 

- C++ Reference

 

www.cplusplus.com

 

 

 

300x250