map은 검색, 삽입, 삭제가 O(logn)인 레드블랙트리로 구현되어 있다.
key 값과 value 값을 가지며, 중복된 값은 제거되고 오름차순으로 정렬된다.
c++에서 사용시, #include <map>을 해줘야 하며, map 헤더파일을 추가하면 중복이 허용되는 mulitmap도 사용할 수 있다.
- 선언
map<string,int> m; //key 값의 자료형은 string, value 값의 자료형은 int
기본적으로 key 값인 string 데이터가 오름차순으로 정렬되어 값이 들어가지만, 내림차순으로 정렬하고 싶다면
map<string,int,greater<string>> m;
(하지만 greater<int>라고 한다고 해서 key 값이 아닌 value 값으로 정렬할 수는 없다.)
- 데이터 삽입
m.insert({"abc",1});
- find
map에 특정 값이 존재하는지 확인 후, 있다면 해당 값의 짝꿍인 int 값 증가
map<string,int> m;
string s1;
cin>>s1;
if(m.find(s1)==m.end() //못 찾았다
{
m.insert({s1,1});
}
else m[s1]++; //찾았으므로 s1의 짝꿍 int의 값을 증가
map에 특정 값이 존재하는지 확인 후, 있다면 해당 값의 짝꿍인 int의 값을 1로 설정
map<string,int> m;
string s1;
cin>>s1;
if(auto i=m.find(s1)!=m.end()) m[s1]=1; //있으면 s1의 짝꿍을 1로 만들어 줌
- 반복
map을 전체 반복하며 출력
map<string, int> m;
for(auto i=m.begin(); i!=m.end(); i++) //끝까지 돌며
{
cout<<i->first<<endl; //map의 string 값을 출력
cout<<i->second<<endl; //map의 int 값을 출력
}
map의 value 값이 1이라면 key 값을 출력
map<string, int> m;
for(auto i=m.begin(); i!=m.end(); i++)
{
if(i->second==1) cout<<i->first<<endl;
}
'알고리즘 > 이론' 카테고리의 다른 글
[C++] MST 구현 (0) | 2022.06.29 |
---|---|
MST (Minimum Spanning Tree) (0) | 2022.06.28 |
우선순위 큐 (0) | 2022.06.16 |
[C++] BST 구현 (0) | 2022.06.15 |
큐 (0) | 2022.06.14 |