개발/C, C++

[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점

growing-dev 2023. 11. 21. 22:10

C++ 표준 라이브러리(STL)에는 다양한 컨테이너가 포함되어 있습니다. 여기서는 unordered_setunordered_map에 대해 알아보겠습니다. 이 두 컨테이너는 해시 테이블을 기반으로 하며, 특정 데이터를 빠르게 찾을 수 있는 장점이 있습니다.

 

 

[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점

 

C++ STL

 

 

 unordered_set 사용법

 

아래는 unordered_set 사용방법에 대한 예제 코드입니다.

#include <unordered_set>
#include <iostream>

int main() {
    std::unordered_set<int> mySet;

    // 요소 추가
    mySet.insert(1);
    mySet.insert(2);
    mySet.insert(3);

    // 요소 확인
    if (mySet.find(2) != mySet.end()) {
        std::cout << "2가 집합에 있습니다." << std::endl;
    }

    // 요소 제거
    mySet.erase(1);

    return 0;
}

 

추가는 insert를 사용하며 find로 요소를 찾고, erase로 제거할 수 있습니다.

 

unordered_map 사용법

 

아래는 unordered_map 사용방법에 대한 예제 코드입니다.

#include <unordered_map>
#include <iostream>

int main() {
    std::unordered_map<std::string, int> myMap;

    // 요소 추가
    myMap["one"] = 1;
    myMap["two"] = 2;
    myMap["three"] = 3;

    // 요소 확인
    if (myMap.find("two") != myMap.end()) {
        std::cout << "키 'two'의 값은 " << myMap["two"] << "입니다." << std::endl;
    }

    // 요소 제거
    myMap.erase("one");

    return 0;
}

 

추가는 insert 를 사용하거나 배열처럼 추가할 수 있으며, find와 erase를 사용합니다.

 

 두 컨테이너의 차이 및 특징

 

두 컨테이너는 아래와 같은 차이가 납니다.

 

  1. 요소의 형태:
    • unordered_set: 단일 값 (중복 허용 안 함).
    • unordered_map: 키-값 쌍.
  2. 순서(공통):
    • unordered_set과 unordered_map은 해시 테이블을 기반으로 하기 때문에 요소의 순서가 정해져 있지 않다.
  3. 접근 방법:
    • unordered_set: 값에 직접 접근.
    • unordered_map: 키를 통해 값에 접근.
  4. 메모리 사용량:
    • unordered_map은 pair나 std::make_pair를 사용해 키와 값을 저장하므로 unordered_set에 비해 조금 더 메모리를 사용할 수 있다.

 

 unordered 의 의미

 

앞서 그냥 set, map 을 알아보았었습니다.

2023.09.02 - [개발/C, C++] - [C++] STL 컨테이너 Set과 Map 활용법과 차이점

 

[C++] STL 컨테이너 Set과 Map 활용법과 차이점

컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다. C++의 Set

growingdev.blog

 

그냥 set, map과 unordered set, unordered map의 차이는 무엇일까요?

간단히 정리하자면 그냥 set/map 정렬된 상태를 유지하면서 검색 속도가 상대적으로 느릴 수 있고, unordered_set/map정렬을 하지 않지만 검색 속도가 빠른 것이 특징입니다.

 

 

 결론

 

이렇게 unordered_setunordered_map은 각각 고유한 용도로 사용되며, 프로그램의 요구 사항에 따라 선택되어야 합니다. 해시 테이블을 사용하기 때문에 빠른 검색이 가능하며, 중복을 허용하지 않거나 키-값 매핑이 필요할 때 유용하게 사용할 수 있습니다.

반응형