본문 바로가기

STL

STL<Map>

Map

  •    Map이란
    • Map은 C++ STL연관 컨테이너중 하나이다.
    • Map은 각 노드가 key와 value값 쌍으로 이루어진 트리이다.(중복을 허용하지 않는다.)
    • Map은 first, second가 있는 pair 객체로 저장되는데 first - key값, second – value로 저장이 된다. Key값으로 중복된 값을 넣을 수 없다. value에는 중복된 값을 넣어도 상관 없다.
    • C++의 map 내부 구현은 검색, 삽입, 삭제가 O(logn)인 레드블랙트리로 구성되어 있다.
  •  Map 멤버 함수

  •  Map의 기본 형태
    • Map<key, value> map1;

    • 위 예시처럼 map<자료형, 자료형> 변수명이 기본 형태이다. 앞에 자료형이 key값이고 뒤에 자료형이 value값이다.
  • Map 정렬
    • Map은 자료를 저장할 때 내부에서 자동으로 정렬 한다.(레드블랙트리구조 기반)
    • Map은 key를 기준으로 정렬하며 오름차순으로 정렬한다. 만약 내림 차순으로 정렬 하고 싶은 경우

    • 위 예시처럼 사용 하면된다.
  • Map 사용방법
  • 헤더 포함
    - Map을 사용하려면 #include<map>을 처리해야 한다.
  • map에 찾고자 하는 데이터가 있는지 확인하기(search)
    - map에서 데이터를 찾을 때는 iterator를 사용한다.
    - 데이터를 끝까지 찾기 못했을 경우, iterator map.end()를 반환하고 찾는 경우에는 해당 원소의 iterator를 반환한다.
    • 위 예시처럼 find()는 key값이 존재하는지 찾는 멤버 함수이다.
  • Map에 데이터 삽입
    - Map은 중복을 허용하지 않는다. Insert()를 수행할 때, key가 중복되면 insert()가 수행되지 않는다. 배열형식으로 접근하면 중복되는 key값의 value값을 바꿔버린다.
    • 데이터 삽입 방식
      • linsert({key, value})
      • insert(make_pair(first, second)) 페어를 insert 페어를 사용하려면 utility 헤더파일을 include하거나 vector, algorithm과 같이 이미 utility헤더 파일을 include하고 있는 헤더파일을 include 시켜야 한다.
      • map[key] = value로 배열형식으로 접근하여 삽입

  •  반복문 데이터 접근(first, second)
    • 인덱스 기반 반복문
      인덱스 기반은 iterator를 활용하여 begin()부터 end()까지 찾는다.

  • 반복문 데이터 접근(first, second) 
    • 범위 기반 반복문범위 기반 반복문

  • map에서 삭제
    • erase()
      • key값을 기준으로 요소 삭제

  • map에서 삭제
    • clear()

 

'STL' 카테고리의 다른 글

<STL>Deque  (0) 2022.07.11