MAP이란 ?
MAP은 노드가 KEY: VALUE 쌍으로 이루어진 트리형식의 구조이며 중복을 허용하지 않는다.
MPA은 First, Second가 있는 Pair객체로 저장되며 First-key , Second-value로 저장되는 형식을 가지고있다.
C++의 STL MAP의 기능은 시간복잡도 O(log N)인 레드블랙트리로 구성되어 있다.
map의 기본함수
기본형 | map<key, value> | key와 value의 pair형으로 선언 |
iterator (반복자) | begin(), end() | begin, end iterator를 반환 |
추가 | insert( make_pair(key,value) ) | 맵의 원소에 pair형으로 데이터 추가 |
삭제 | erase(key) | 맵에서 key에 해당하는 원소 삭제 |
claer() | 맵의 원소 모두삭제 | |
조회 | find(key) | key값에 해당하는 iterator를 반환 |
count(key) | key값에 해당하는 value의 갯수 반환 | |
기타 | empty() | 맵이 비어있으면 true, 아니면 false |
size() | 맵의 원소의 수 반환 |
Map의 헤더파일
#include<map>;
Map의 기본 형
map<key, value> m;
map은 자료를 저장할때 내부에서 자동으로 정렬하게 된다. 여기서 map은 key를 기준으로 정렬하게 되며 오름차순으로 정렬하게 된다.
만약 내림차순으로 정렬하고자 한다면
map<int, int,greater> m; 선언 이후 데이터에 마이너스를 붙여 삽입하면 내림차순 정렬이 된다.
map 선언하기
map<key type, value type>이 기본 구조이며 선언시
map<string, int> m;
map search 하기 ( 데이터 확인 )
iterator를 사용하여 map의 데이터를 확인하게 된다.
데이터를 끝까지 찾지 못했을 경우, iterator는 map.end()를 반환한다.
#include <iostream>
#include <map>
#include <string>
map<string, int> m;
if(m.find("Alice") != m.end())
{
cout<<"find"<<endl;
}
else
cout<<"not find"<<endl;
map에 데이터 삽입
-위에서도 말했지만 map은 데이터의 중복을 허용하지 않는다. 그렇기 떄문에 insert를 진행할때 key가 중복이 된다면 insert가 수행되지 않는다.
m.insert({"cam", 300});
반복문 데이터 접근 ( first, second)
인덱스 기반 반복문
( 인덱스 기반은 iterator를 활용하여 begin() 부터 end()까지 조회하는것 )
for( auto iter = m.begin(); iter!= m.end(); iter++)
{
cout<< iter->first <<" "<< iter->second <<endl;
}
cout<< endl;
범위 기반 반복문 활용
for(auto iter:m)
{
cout<<iter.first<<""<iter.second<<endl;
}
map에서 데이터 삭제
map에서 데이터 삭제하기 위해 활용하는 함수는 erase와 clear이다
특정위치의 요소 삭제
m.erase(m.begin()+2);
key값을 기준으로 요소 삭제
m.erase("alice");
map의 모든 데이터 삭제
erase 함수로 모든 요소 삭제 (map의 begin()부터 end()까지 )
m.erase(m.begin(), m.end());
clear 함수로 모든 요소 삭제
m.clear();
'programming > C++' 카테고리의 다른 글
[C++] Pair , Make_pari 소개 (0) | 2022.04.04 |
---|---|
[C++] Template 과 iterator 문법 복습하기 (0) | 2022.03.29 |
[c++] STL Queue , Stack 정리 (0) | 2022.03.29 |
[C++] STL - Vector 정리 (0) | 2021.12.27 |
[C++] STL - Array 정리 (0) | 2021.12.27 |