본문 바로가기
Dev/C++

Map 함수정리 C++

by HenryNoh 2021. 4. 7.

<Map 함수>

- c++로 코딩 테스트를 준비할 때 아마 가장 중요한 자료구조 중 한 가지로 뽑힐 것이라 생각된다.

- vector<pair<~,~>>와 비슷한 자료구조의 형태이지만 그 사용법은 훨씬 무궁무진하다.

  • Map 선언
#include <map>

 

  • Map assign, add (Map 할당, 추가)

- m.insert(make_pair(key,value)) : 순서에 상관없이 오름차순으로 정렬돼서 삽입

map<type1,type2> m1;
m1.insert(make_pair(~,~));
m1.insert(pair<type1,type2>(~,~));

map<int,int> m2;
m2.insert(make_pair(1,2));
m2.insert(pair<int,int>(1,2));

map<string,string> m3;
m3.insert(make_pair("hello","world"));
m3.insert(pair<string,string>("hello","world"));

 

  • Map Erase (Map 요소 삭제)

- m.erase(iter or key) : iter의 위치를 삭제할 수 도 있고 key값을 알고 있으면 직접적으로 삭제할 수 도 있다.

m1.erase(m1.begin());	//첫번째 요소 삭제
m1.erase(--m1.end());	//마지막 요소 삭제
m1.erase(i);		//i가 key값인 요소 삭제 (value도 같이)

 

  • Map Find (Map 요소 검색)

- m.find(i) : i가 key값인 반복자를 반환한다. 단순히 find만 활용하기 보다는 value값 참조, 다른 자료구조와 혼용을 많이 한다. 만약 찾은 값이 없을 경우 m.end()를 반환한다.

vector<int> ex;
map<int,string> m;

m.find(1)->second;	// 2
m.find(ex[3])->second;	// ex 벡터의 값에 대한 map 탐색 가능

 

  • Map key, value (Map value 수정법)

- m[i] = 10 : i를 key로 가지는 value를 10으로 수정한다.

위처럼 보다시피 map은 요소에 대한 값을 아주 쉽게 변경할 수 있다. 이 점에서 매우 큰 이득을 보기도 한다.

m.insert(make_pair(1,1));
m.insert(make_pair(2,2));
m.insert(make_pair(3,3));
m.insert(make_pair(4,4));

m[2] = 7;
m[4] = 9;

for (auto iter = m.begin(); iter != m.end(); iter++)
{
	cout << iter->first << " " << iter->second << endl;
}
// 1 1
// 2 7
// 3 3
// 4 9

 

  • Map Capacity (Map 용량)

- m.empty() : map이 비어있는지 확인한다.
- m.clear() : map의 모든 원소를 제거한다.
- m.size() : map의 원소의 개수를 반환한다.

if (m.empty())
	cout << "It's empty!" << endl;
    
m.insert(make_pair(1, 2);
m.insert(make_pair(2, 3));
m.insert(make_pair(3, 4));
m.insert(make_pair(4, 5));

if (!m.empty())
	cout << "It's not empty!" << endl;
cout << m.size() << endl;

m.clear();
if (m.empty())
	cout << "It's empty!";
    
// It's empty!
// It's not empty!
// 4
// It's empty!

 

이외에도 많은 함수들이 존재는 하지만 실질적으로 map을 활용할 때는 거의 사용하지 않다. map 그 자체의 자료구조만으로도 수많은 것을 할 수 있기 때문이다.

'Dev > C++' 카테고리의 다른 글

Vector 함수정리 C++  (0) 2020.11.11
String 함수정리 C++  (0) 2020.11.05

댓글