🖥️ CS/Data Structure & Algorithm

map

한국의 메타몽 2020. 10. 15. 09:52

map

  • Key와 Value를 쌍으로 자료를 보관하는 컨테이너. 
  • map은 자료를 저장할 때 내부에서 자동 정렬을 하고, hash_map은 정렬하지 않는다. 
  • 레드 블랙 트리 자료구조를 사용하며, 작은 값은 왼쪽 서브트리, 큰 값은 오른쪽 서브트리에 저장한다. (오름차순)
  • 따라서 정렬이 필요하지 않은 곳에서 hash_map을 사용하는 것은 메모리 낭비이다.
  • STL로 map과 iterator를 추가해야 한다.

 

map<자료형, 자료형> 변수명 
(ex : map<string, int> map1 ) 
맵 생성
변수명.size()
(ex : map1.size() ) 
맵의 사이즈 반환
변수명.empty() 
(ex : map1.empty() ) 
맵이 비어있으면 1(true), 아니면 0(false)를 출력
insert 방법 1 : 변수명[key]  = value
(ex : map1[1] = 'a' ) 
맵에 키와 값을 입력
insert 방법 2 : 변수명.insert({key, value})
(ex : map1.insert({2, 'b'}) )
맵에 키와 값을 입력
insert 방법 3 : 변수명.insert(pair<자료형,자료형>(key, value))
(ex : map1.insert(pair<int,int>(10,30)) )
맵에 키와 값을 입력
변수명.erase(key) Map에서 Key값에 해당하는 원소를 삭제
변수명.clear()  맵의 데이터를 모두 소거
map<자료형, 자료형>::iterator 변수명;
(ex : map<int,char>::iterator cursor )
맵의 반복문 활용을 위한 변수 선언
변수명.find(key) key값에 해당하는 iterator를 반환
변수명.count(key) key값에 해당하는 원소들의 개수를 반환

 

#include <iostream>
#include <iterator> 
#include <map>
using namespace std;
int main() {
    map<int, char> map1;
    map<int, char>::iterator cursor;
    map1[1]='a';
    map1[2]='b';
    cout <<"KEY\tELEMENT"<<endl; 
    for(cursor = map1.begin(); cursor!=map1.end(); cursor++){ 
        cout<<cursor->first;
        cout<< '\t'<<cursor->second<<'\n'<<endl; 
    }
}

 

자료 출저 : appdividend.com/2019/07/05/c-map-tutorial-with-example-standard-template-library-stl/

 

C++ Map Example | Map in C++ Tutorial (STL)

C++ Map is a dictionary-type associative container, also known as holder objects in the C++ STL. The Map as the name suggests storing the values in a mapped fashion.

appdividend.com