프로그래밍/c++
set, multimap, multiset
오늘의논리
2023. 3. 4. 19:47
728x90
#include <set> 필요
set
map 이 key 와 value 를 다뤘다면
set 은 key 만 다룬다고 생각하면됨(key = value)
multimap
map에서 중복키를 허용하는게 multimap
multiset
set에서 중복키를 허용하는게 multiset
#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
using namespace std;
int main()
{
set<int> s;
//넣고
s.insert(10);
s.insert(30);
s.insert(20);
s.insert(50);
s.insert(40);
s.insert(70);
s.insert(90);
s.insert(80);
s.insert(100);
//빼고
s.erase(40);
s.erase(80);
//찾고
set<int>::iterator findIt = s.find(50);
if (findIt == s.end())
{
cout << "못찾음" << endl;
}
else
{
cout << "찾음" << endl;
}
//순회하고
for (set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
cout << (*it) << endl;
}
//s[10]//이런 문법은 막혀있음
cout << "------------------------------" << endl;
multimap<int, int>mm;
//넣고
mm.insert(make_pair(1, 100));
mm.insert(make_pair(1, 200));
mm.insert(make_pair(1, 300));
mm.insert(make_pair(2, 400));
mm.insert(make_pair(2, 500));
//mm[1] = 500; // 역시 이런건 막혀있음.
//빼고
unsigned int count = mm.erase(1); //키1의 값을 지움 ->3개가 지워지고 count = 3이됨
//찾고
multimap<int,int>::iterator itFind = mm.find(1);
if (itFind != mm.end())
{
mm.erase(itFind);
}
//pair<multimap<int, int>::iterator, multimap<int, int>::iterator> itPair;//auto로 대체가능
//mm.equal_range(1);
// 순회하고
for (multimap<int, int>::iterator it = mm.begin(); it != mm.end(); ++it)
{
cout << it->first<<" "<<it->second << endl;
}
cout << "------------------------------" << endl;
multiset<int>ms;
//넣고
ms.insert(100);
ms.insert(100);
ms.insert(100);
ms.insert(200);
ms.insert(200);
//찾고
multiset<int>::iterator findIt2 = ms.find(100);
return 0;
}
728x90