프로그래밍/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