목차.

  1. 서론
  2. 본론
  3. 결론

 

서론

 

'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++에서 효율적인 데이터 관리와 검색을 위해 사용되는 컨테이너입니다.

해시 함수를 이용하여 데이터를 빠르게 검색하며, 중복된 키를 허용하지 않는 등 다양한 기능을 제공합니다.

이를 통해 복잡한 데이터 구조를 구현하고 다양한 문제를 해결하는 데 유용하게 활용할 수 있습니다.

+ Recent posts