<MAP이란>
중복을 허용하지 않는 key와 관련된 value를 관리하며.
내부적으로 검색 삽입 삭제가 되는 레드 블랙트리를 사용하고있고 MAP의 구조는 다음과 같다.
<기본적인 MAP 사용>
map 해더
#include <map>
선언하기
map<string,int> m;
삽입하기
insert를 사용해서 추가하며 key값을 중복해서 사용못한다.
m.insert({"apple",500});
데이터 접근
map.begin();
=>map의 가장 첫번째 아이템을 가르키는 반복자를 가져옵니다.
map.end();
=>map의 가장 마지막 아이템+1을 가르키는 반복자를 가져옵니다.
(1) find 사용
find로 찾지 못했을경우 .end를 반환하는것을 이용해서 찾는다.
if (m.find("apple") != m.end())
printf("apple find!\n");
else
printf("not find");
(2)for 사용
조회를 위해 iterator를 사용해야하며 iter->first를 통해 접근한다
자세한 iter구조는 맨 아래 디버깅 모습을 통해 이해할 수 있다.
//using iter---------------------------------------------
map<string,int>::iterator iter;
//search map in m by begin,first,second------------------
printf("\n\n<search map> in m\n");
for (iter = m.begin(); iter != m.end();iter++){
cout << iter->first<<" "<<iter->second<<endl;
}
삭제하기
m.erase("banana");
전체 활용
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<string,int> m;
// data insert--------------------------------------------
m.insert({"apple",3000});
m.insert({"banana",4000});
m.insert({"banana",5000});
m.insert({"mallon",6000});
// apple data search--------------------------------------
printf("<search apple>\n");
if (m.find("apple") != m.end())
printf("apple find!\n");
else
printf("not find");
//using iter---------------------------------------------
map<string,int>::iterator iter;
//search map in m by begin,first,second------------------
printf("\n\n<search map> in m\n");
for (iter = m.begin(); iter != m.end();iter++){
cout << iter->first<<" "<<iter->second<<endl;
}
//remove banana-------------------------------------------
m.erase("banana");
//search map in m-----------------------------------------
printf("\n\n<search map> in m after erase\n");
for (iter = m.begin(); iter != m.end();iter++){
cout << iter->first<<" "<<iter->second<<endl;
}
return 0;
}
참조:life-with-coding.tistory.com/305
참조:https://en.cppreference.com/w/cpp/container/map
'c++ > STL' 카테고리의 다른 글
[STL]MAP(구조체 활용) (0) | 2021.01.23 |
---|