multimap?
multimap은 기본적으로 map과 비슷하지만 다른 부분들이 있다.
비슷한 부분은 [map]에서 확인하자.
1. Key의 중복을 허용한다.
2 [] 연산자를 지원하지 않기 때문에 insert() 멤버 함수로 삽입해야 한다.
연습해보기
#include <iostream>
#include <map>
using namespace std;
int main()
{
// less <
// left child key < parent key <= right child key
multimap<int, int> mm;
//multimap은 [] operator를 제공하지 않는다.
//mm[5] = 100;
mm.insert(pair<int, int>(5, 100));
mm.insert(pair<int, int>(3, 100));
mm.insert(pair<int, int>(8, 30));
mm.insert(pair<int, int>(3, 40));
mm.insert(pair<int, int>(1, 70));
mm.insert(pair<int, int>(7, 100));
mm.insert(pair<int, int>(8, 50));
for (auto iter = mm.begin(); iter != mm.end(); iter++)
cout << "(" << iter->first << "," << iter->second << ") ";
cout << '\n';
cout << "mm.count(3): " << mm.count(3) << '\n';
cout << "mm.count(9): " << mm.count(9) << '\n';
cout << "mm.count(5): " << mm.count(5) << '\n';
auto iter = mm.find(3);
if (iter != mm.end())
cout << "첫 번째 key 3에 매핑된 value: " << iter->second << '\n';
else
cout << "key 3이 multimap에 없습니다.\n";
return 0;
}
(1, 70) (3, 100) (3, 40) (5, 100) (7, 100) (8, 30) (8, 50)
mm.count(3) : 2
mm.count(9) : 0
mm.count(5) : 1
첫 번째 key 3에 매핑된 value : 100
#include <iostream>
#include <map>
using namespace std;
int main()
{
multimap<int, int> mm;
mm.insert(pair<int, int>(5, 100));
mm.insert(pair<int, int>(3, 100));
mm.insert(pair<int, int>(8, 30));
mm.insert(pair<int, int>(3, 40));
mm.insert(pair<int, int>(1, 70));
mm.insert(pair<int, int>(7, 100));
mm.insert(pair<int, int>(8, 50));
for (auto iter = mm.begin(); iter != mm.end(); iter++)
cout << "(" << iter->first << "," << iter->second << ") ";
cout << '\n';
multimap<int, int>::iterator lower_iter = mm.lower_bound(3);
multimap<int, int>::iterator upper_iter = mm.upper_bound(3);
cout << "[lower_iter, upper_iter): ";
for (auto iter = lower_iter; iter != upper_iter; iter++)
cout << "(" << iter->first << "," << iter->second << ") ";
cout << '\n';
auto equal_iter = mm.equal_range(3);
cout << "[equal_iter.first, equal_iter.second): ";
for (auto iter = equal_iter.first; iter != equal_iter.second; iter++)
cout << "(" << iter->first << "," << iter->second << ") ";
cout << '\n';
return 0;
}
(1, 70) (3, 100) (3, 40) (5, 100) (7, 100) (8, 30) (8, 50)
[lower_iter, upper_iter): (3, 100) (3, 40)
[equal_iter.first, equal_iter.second): (3, 100) (3, 40)
'CS > Data Structure' 카테고리의 다른 글
[C++] priority_queue (0) | 2021.08.04 |
---|---|
[C++] stoi (0) | 2021.05.06 |
[C++] map (0) | 2021.04.28 |
[C++] unordered_set (0) | 2021.04.12 |
[C++] multiset (0) | 2021.04.12 |