프로그래밍 공부

C++ STL Map 본문

Programming

C++ STL Map

khj1999 2024. 9. 17. 15:42

std::map은 C++ 표준 라이브러리에서 제공하는 연관 컨테이너로, 키-값 쌍을 저장하고 관리하는 데 사용됨.

std::map은 내부적으로 키를 정렬하여 이진 검색 트리(보통 레드-블랙 트리)를 사용해 구현되며, 키는 중복을 허용하지 않음.

 

기본적인 사용법

#include <iostream>
#include <map>

int main() {
    // std::map 선언
    std::map<int, std::string> myMap;

    // 요소 추가
    myMap[1] = "Apple";
    myMap[2] = "Banana";
    myMap[3] = "Cherry";

    // 요소 접근
    std::cout << "Key 2: " << myMap[2] << std::endl; // 출력: Banana

    // 반복문을 통한 요소 순회
    for (const auto &pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    // 요소 찾기
    auto it = myMap.find(3);
    if (it != myMap.end()) {
        std::cout << "Found key 3 with value: " << it->second << std::endl;
    }

    // 요소 삭제
    myMap.erase(2);

    // 요소의 존재 여부 확인
    if (myMap.count(2) == 0) {
        std::cout << "Key 2 not found." << std::endl;
    }

    return 0;
}

주요 메서드 및 특징

  • insert(): 요소를 삽입. - pair 형태로 입력
  • find(): 특정 키를 가진 요소를 찾는다. 요소를 찾으면 반복자를 반환하고, 찾지 못하면 map.end()를 반환.
  • erase(): 특정 키를 가진 요소를 제거.
  • count(): 특정 키가 존재하는지 확인. map에서는 중복 키를 허용하지 않으므로 결과는 0 또는 1임.
  • size(): 맵에 있는 요소의 개수를 반환.
  • empty(): 맵이 비어 있는지 여부를 반환.
  • contains(): 이 기능은 C++20부터 사용할 수 있고, map에 요소가 포함되어 있으면 true 아니면 false를 반환

std::map은 키를 정렬하여 저장하므로 탐색, 삽입, 삭제 등의 연산이 평균적으로 O(log n)의 시간 복잡도를 가진다.

만약 키가 순서 없이 저장되기를 원하거나 더 빠른 탐색 속도가 필요하다면, std::unordered_map을 사용하는 것이 좋음. std::unordered_map은 해시 테이블을 사용해 평균적으로 O(1) 시간 복잡도를 제공함.

'Programming' 카테고리의 다른 글

C# WinForm으로 계산기 만들어보기  (0) 2025.02.17
GIT 공부시작  (0) 2022.12.25
HTML 공부 정리  (0) 2021.08.24
Comments