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

2023. 9. 2. 22:49·개발/C, C++
반응형

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

C++의 Set과 Map 활용법과 차이점

 

set와 map

 
 

Set: 중복 없이 유일한 값 관리

 
Set은 중복된 값을 허용하지 않는 데이터 구조입니다. 이를 통해 유일한 값을 저장하고 관리할 수 있습니다. 값을 정렬된 순서로 저장하며, 내부적으로는 레드-블랙 트리(Red-Black Tree) 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 이러한 특징 때문에 집합 연산에 유용하게 사용할 수 있습니다.

#include <set>
std::set<int> mySet;
mySet.insert(10);
mySet.insert(20);
mySet.insert(10); // 중복된 값은 무시됨


 

Map: 키-값 쌍으로 데이터 관리

 
map은 키(key)와 값(value)을 연결하는 데이터 구조로, 각 키는 유일해야 합니다. 이를 통해 키를 사용하여 연관된 값을 검색할 수 있습니다. 값은 정렬된 순서로 저장되며, 내부적으로는 레드-블랙 트리 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 주로 키-값 관계를 표현하고 검색할 때 사용됩니다.

#include <map>
std::map<std::string, int> myMap;
myMap["Alice"] = 25;
myMap["Bob"] = 30;
myMap["Alice"] = 26; // Alice의 나이를 업데이트


위의 코드에서는 `myMap`이라는 `std::map` 객체를 생성하고, 문자열 키와 정수 값을 연결하고 있습니다. "Alice" 키에 대한 값은 중복되지 않기 때문에 업데이트가 가능합니다.
 
 

Set과 Map의 차이점

 

1. 내용:
   - `set`은 값만을 저장합니다.
   - `map`은 키-값 쌍을 저장합니다.

2. 중복:
   - `set`은 중복된 값을 허용하지 않습니다.
   - `map`은 키는 중복되지 않아야 하지만, 값은 중복될 수 있습니다.

3. 사용 사례:
   - `set`은 고유한 값을 유지하거나 정렬된 데이터 집합을 필요로 할 때 사용됩니다.
   - `map`은 키-값 관계를 표현하고 검색할 때 사용됩니다.


 
 

 결론

 
Set과 Map은 각각의 고유한 특징을 가지고 있으므로, 프로그램 요구 사항에 따라 적절한 컨테이너를 선택해야 합니다. 두 컨테이너는 데이터 구조를 효율적으로 관리하는데 큰 도움을 주는 강력한 도구입니다.

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

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

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

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

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[C++] STL 컨테이너 Set과 Map 활용법과 차이점
상단으로

티스토리툴바