목차.
서론
'unordered_map'은 해시 맵 데이터 구조를 구현한 컨테이너로, 데이터를 효율적으로 관리하고 검색할 수 있게 해줍니다.
이 글에서는 'unordered_map'에 대해 자세히 알아보겠습니다.
본론
'unordered_map'이란?
unordered_map은 C++ 표준 라이브러리(STL)에서 제공하는 해시 맵 자료구조를 구현한 컨테이너입니다.
해시 맵은 '키(key)'와 '값(value)'으로 이루어진 쌍(pair) 데이터를 저장하는데 특히 유용하며, 키를 통해 값을 빠르게 검색할 수 있습니다.
unordered_map은 키와 값이 일대일로 대응되는 맵을 구현하는 데 사용됩니다.
'unordered_map'의 특징
해시 함수 사용
- unordered_map은 내부적으로 해시 함수를 사용하여 데이터를 저장하고 검색합니다.
그 결과, 매우 빠른 검색 속도를 제공하며, O(1) 시간 복잡도로 요소에 접근할 수 있습니다.
중복된 키 방지
- unordered_map은 중복된 키를 허용하지 않습니다.
각 키는 유일해야 하며, 새로운 값을 추가할 때 이미 존재하는 키에 해당하는 값을 덮어쓸 수 있습니다.
범용성
- unordered_map은 다양한 데이터 유형을 지원합니다.
정수, 문자열, 사용자 정의 객체 등 어떤 데이터 유형도 키 또는 값으로 사용할 수 있습니다.
크기 조절 가능
- unordered_map은 동적으로 크기를 조절할 수 있습니다.
요소를 추가하거나 제거함에 따라 내부 저장 공간이 자동으로 관리됩니다.
'unordered_map'의 사용 예시1
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
std::unordered_map<std::string, int> umap; // 문자열과 정수로 이루어진 해시 맵 생성
// 키-값 쌍 추가
umap["apple"] = 5;
umap["banana"] = 3;
umap["cherry"] = 8;
// 키를 이용한 값 검색
std::cout << "Number of apples: " << umap["apple"] << std::endl;
// 키가 존재하는지 확인
if (umap.find("banana") != umap.end()) {
std::cout << "Bananas are in the map." << std::endl;
}
// 모든 키-값 쌍 순회
for (const auto& pair : umap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
'unordered_map'의 사용 예시2
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int findMode(const vector<int>& array) {
unordered_map<int, int> count_map; // 숫자별 등장 횟수를 저장하기 위한 unordered_map
// 배열을 순회하며 각 숫자의 등장 횟수를 세기
for (const int num : array) {
count_map[num]++;
}
int max_count = 0; // 가장 높은 등장 횟수
int mode = -1; // 최빈값 초기값을 -1로 설정
// unordered_map을 순회하며 가장 높은 등장 횟수를 가진 숫자 찾기
for (const auto& entry : count_map) {
if (entry.second > max_count) {
max_count = entry.second;
mode = entry.first;
} else if (entry.second == max_count) { // 최빈값이 여러 개인 경우
mode = -1;
}
}
return mode;
}
int main() {
vector<int> array = {1, 2, 3, 3, 3, 4};
int mode = findMode(array);
if (mode != -1) {
cout << "The mode is: " << mode << endl;
} else {
cout << "There are multiple modes." << endl;
}
return 0;
}
결론
unordered_map은 C++에서 효율적인 데이터 관리와 검색을 위해 사용되는 컨테이너입니다.
해시 함수를 이용하여 데이터를 빠르게 검색하며, 중복된 키를 허용하지 않는 등 다양한 기능을 제공합니다.
이를 통해 복잡한 데이터 구조를 구현하고 다양한 문제를 해결하는 데 유용하게 활용할 수 있습니다.
'프로그래밍 > C++' 카테고리의 다른 글
[C++] STL Sort 함수 사용(오름차순, 내림차순) (0) | 2023.09.15 |
---|---|
[C++] 소수점 자릿수 설정하기 (0) | 2023.08.21 |
[C++] 정수 한자리씩 분할하기 (0) | 2023.08.14 |
[C++] 구조체를 활용하여 x, y 좌표 입력하기 (0) | 2023.08.10 |
[C++][알고리즘] 소인수분해 (0) | 2023.08.09 |