[개념공부] Map

GomHyeok·2022년 3월 23일
0

한 쌍의 Key와 Value를 만들어 쉽게 Value를 찾고 Key를 찾기 위해 우리는 Map이라는 Container를 사용한다.
Index를 통해 Value를 찾는 Vector와 비슷하지만 차이점을 가지고 있다.


📒Map Container

✍Map Container이란?

자료구조 트리로써 완전 이진트리다. 노드 기반으로 구성되어있으며 노드는 [Key, Value]의 Pair로 구성되어있다.

✍특징

📌특징

  • 크기가 가변적이다
    - Vector와 같이 동적할당이 가능하다
  • 정렬된다.
    -데이터의 삽입과 동시에 Key값을 기준으로 오름차순으로 정렬된다.
  • Key와 Value로 이루어져 Pair 객체 형태로 저장된다.
  • 노드 기반의 완전 이진 트리 구조다
  • Key는 고유한 값으로써 중복이 불가능하다.
    - multimap에서는 가능하다

📌헤더파일

#include< map >

std::map으로써 using namespace std를 사용하면 편하다.

✍사용방법

📌생성

  1. map<type1, type2> name
    • 기본 선언 방법
  2. map < type1> name(pred)
    • pred를 통해 정렬기준을 세운다
  3. map< type1> name(name2)
    • name2를 복사한 name을 생성한다.

📌삽입과 삭제

  • insert 멤버 함수
    - map.insert()의 형태로써 ()안에는 pair 형태의 pair<type1, type2>( , ) 또는 Dictionary 형태의 { , }이 들어간다.
  • Operator[]를 통한 삽입 수정
    - name[key]=value를 통해 map에 Data를 삽입하거나 수정할 수 있다.
  • Clear()
    - 저장하고 있는 모든 원소 삭제
  • erase(start, end)
    - 특정위치의 원소나 범위의 원소 삭제

📌기타 멤버함수

  • begin()
    - 첫 번째 원소의 반복자를 리턴한다.
  • end()
    - 마지막 원소의 끝부분 반복자를 리턴한다.
  • empty()
    - Map이 비어있는지 확인한다.
  • find()
    - Key값을 가진 요소를 찾는다.
  • swap()
    - 서로 값을 바꾼다.

    이 외에도 많은 멤버함수가 Map에는 사용되고 있고, 멤버함수를 이용해 더 손쉬운 코딩을 할 수 있다.

📌순환

반복문을 통하여 데이터에 접근한다.

for(auto iter: name)		// name은 map type의 변수명
{
	cout<<iter.first<<" "<<iter.second<<endl;
}							// Pair와 같이 frist와 second를 사용하여 Key와 Value에 접근할 수 있다.

여러가지 Container 형태의 변수가 있지만 Map처럼 고유한 Key와 그에 맞는 Value를 가지고 있는 변수를 활용한다면 알고리즘 문제를 더 효율적으로 풀 수 있을 것이다.

profile
github : https://github.com/GomHyeok/

0개의 댓글