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

2023. 11. 21. 22:10·개발/C, C++
반응형

C++ 표준 라이브러리(STL)에는 다양한 컨테이너가 포함되어 있습니다. 여기서는 unordered_set과 unordered_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_set과 unordered_map은 각각 고유한 용도로 사용되며, 프로그램의 요구 사항에 따라 선택되어야 합니다. 해시 테이블을 사용하기 때문에 빠른 검색이 가능하며, 중복을 허용하지 않거나 키-값 매핑이 필요할 때 유용하게 사용할 수 있습니다.

'개발 > C, C++' 카테고리의 다른 글

[Clang] C++ 빌드 시 undefined reference error 해결 방법  (0) 2023.12.02
[C++] class 생성자에서 explicit 키워드의 의미  (0) 2023.09.05
[C++] STL 컨테이너 Set과 Map 활용법과 차이점  (0) 2023.09.02
[C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제  (0) 2023.09.01
[C++] 생성자에서 virtual 가상 함수 호출하는 경우의 문제  (0) 2023.08.11
'개발/C, C++' 카테고리의 다른 글
  • [Clang] C++ 빌드 시 undefined reference error 해결 방법
  • [C++] class 생성자에서 explicit 키워드의 의미
  • [C++] STL 컨테이너 Set과 Map 활용법과 차이점
  • [C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    VS Code
    Clang
    OPIC
    WSL
    CMake
    프로그래머스
    필스너
    생산성
    하이볼
    키즈카페
    오픽
    소프티어
    dfs
    Python
    C++
    티스토리챌린지
    git
    TDD
    앨리웨이
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점
상단으로

티스토리툴바