Multimap은 map이지만 같은 key값에 여러개의
value를 저장할 수 있는 특징을 가졌습니다.
값의 저장 방법은 map과 동일하며 []를 사용하여
자동으로 값을 넣어주는 방법은 사용하지 못합니다.
선언방법을 알아봅시다.
#include<map>
먼저 전처리기에 include를 해야합니다.
int형의 key와 string의 value를 저장하는 m_map라는
이름의 multimap를 만든다고 한다면
multimap<int,string> m_map;
이런식으로 선언을 하면 됩니다.
사용방법을 알아 봅시다.
값을 저장하는 방법은 map과
동일하게 make_pair를 사용하여
pair를 만들어 넣어 줍니다.
m_map.insert(make_pair(key,value));
지우는방법도 마찬가지로 동일합니다.
erase를 사용하며 iterator로 지우고 싶은
위치를 반환하여 삭제합니다.
multimap<int,string>::iterator iter = m_map.begin();
m_map.erase(iter);
key값의 value의 갯수를 반환 할때는
count를 사용하여 반환합니다.
cout<<m_map.count();
key값의 첫번째 위치를 반환하는 함수입니다.
m_map.lower_bound(key);
key값의 마지막 위치를 반환하는 함수입니다.
m_map.upper_bound(key);
안의 값을 모두 지울때는
clear를 사용하시면 됩니다.
m_map.clear()
안의 데이터가 비어 있는지 확인하는 방법도 있습니다.
empty 사용하면 안의 데이터의 수를 반환 하게 됩니다.
if (m_map.empty())
empty자체가 bool타입으로 반환값을 갖기 때문에
이런식으로 조건문으로 사용하시면 됩니다.
간단한 예제 입니다.
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
multimap<int,string> m_map;
m_map.insert(make_pair(0, "zero"));
m_map.insert(make_pair(0, "one"));
m_map.insert(make_pair(0, "two"));
m_map.insert(make_pair(1, "zero"));
m_map.insert(make_pair(1, "one"));
m_map.insert(make_pair(1, "two"));
cout << "0 size : " << m_map.count(0) << endl;
multimap<int,string>::iterator iter = m_map.begin();
iter++;
m_map.erase(iter);
cout << "one 삭제" << endl;
cout<<"0 size : "<< m_map.count(0) << endl;
cout << "key 1의 첫번째 값 : " << m_map.lower_bound(0)->second << endl;
cout << "key 1의 마지막 값 : " << m_map.upper_bound(0)->second << endl;
cout << "전체순회" << endl;
for (auto it = m_map.begin(); it != m_map.end(); it++)
{
cout <<"["<< it->first <<","<< it->second <<"]"<< endl;
}
cout << "0만 순회" << endl;
for (auto it = m_map.lower_bound(0); it != m_map.upper_bound(0); it++)
{
cout << "[" << it->first << "," << it->second << "]" << endl;
}
m_map.clear();
if (m_map.empty())
cout << "empty!" << endl;
return 0;
}
실행화면 입니다.
'프로그래밍 > c++ STL' 카테고리의 다른 글
[c++ STL] Map 기본 사용법 및 예제 (0) | 2020.02.03 |
---|---|
[c++ STL] List 기본 사용법 및 예제 (0) | 2020.02.03 |
[c++ STL] Stack 기본 사용법 및 예제 (0) | 2020.01.31 |
[c++ STL] Queue 기본 사용법 및 예제 (0) | 2020.01.31 |
[c++ STL] Deque 기본 사용법 및 예제 (0) | 2020.01.10 |