Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] set, multimap, multiset 본문
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
// 면접의 경우 map과 set의 구조와 같은 세부 내용을 물어보기도 하고, map과 multimap의 차이점에 대해서도 물어보기도 한다.
int main()
{
// map : (Key, Value)
// map<int, Player*>
set<int> s; // value가 필요없고 key만 필요로 하는 경우
// set는 기본적으로 map과 일치하지만 key, value가 일치한다는 특징이 있다.
// multimap : map에서 중복 키를 허용한 것
// multiset : set에서 중복 키를 허용한 것
// 위 두개는 자주 사용하지는 않는다.
// 주 기능 : 넣기 빼기 찾기 순회하기
// 넣기
s.insert(10);
s.insert(30);
s.insert(20);
s.insert(50);
s.insert(40);
s.insert(70);
s.insert(60);
s.insert(90);
s.insert(80);
s.insert(100);
// 빼기
s.erase(40);
// 찾기
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;
}
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); // 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;
itPair = mm.equal_range(1);
multimap<int, int> ::iterator itBegin = mm.lower_bound(1);
multimap<int, int> ::iterator itEnd = mm.upper_bound(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);
pair<multiset<int> ::iterator, multiset<int> ::iterator> itPair2;
itPair2 = ms.equal_range(100);
for (multiset<int>::iterator it = itPair2.first; it != itPair2.second; ++it)
{
cout << *it << endl;
}
multiset<int> ::iterator itBegin2 = ms.lower_bound(100);
multiset<int> ::iterator itEnd2 = ms.upper_bound(100);
for (multiset<int>::iterator it = itBegin2; it != itEnd2; ++it)
{
cout << *it << endl;
}
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] algorithm (0) | 2023.09.30 |
---|---|
[C++] 연습 문제 (0) | 2023.08.31 |
[C++] map #2 (0) | 2023.07.13 |
[C++] map #1 (0) | 2023.07.11 |
[C++] deque (0) | 2023.06.26 |