프로그래밍 공부/STL
C++ STL set & multiset
재우이
2022. 2. 17. 16:25
set 이란?
- 데이터를 키로 사용하는 연관컨테이너
- 데이터를 오름차순으로 정렬하여 삽입
- 중복 데이터를(키를) 허용하지 않는다.
- 검색 속도가 빠르다
multiset이란?
- set과 동일하며 중복 데이터를(키를) 허용한다
set, multiset사용법
헤더
- #include<set>
-선언 방법
set<데이터 타입> 셋 이름;
multiset<데이터 타입> 멀티셋 이름;
-삽입, 삭제
s1.insert(데이터); |
데이터 삽입 // 자동으로 크기에 맞는 위치에 정렬 삽입 |
s1.erase(데이터); |
데이터 제거 |
-데이터 검색
s1.find(데이터); | 찾는 데이터가 있으면 해당 위치 반복자 반환, 없을 시 end() 반복자 반환 |
내림차순 set
사용법
헤더 추가
-#include<functional>
-선언 방법
set<데이터 타입, greater<데이터 타입>> 셋 이름;
오름차순은 greater-> less 로 바꿔주거나 default이다
총 코드
#include <functional>
#include<set>
#include<iostream>
using namespace std;
int main()
{
set<int> s1;
set<int> s2 = { 3,1,5,4,2 };
cout << "set<int> s1, s2" << endl;
for (auto i : s2)
cout << i << ", ";
cout << endl;
cout << "s1.insert()" << endl;
s1.insert(4);
s1.insert(8);
s1.insert(3);
s1.insert(2);
for (auto i : s1)
cout << i << ", ";
cout << endl;
cout << "s1.erase()" << endl;
s1.erase(3);
s1.erase(8);
for (auto i : s1)
cout << i << ", ";
cout << endl;
cout << "s1.find(2)" << endl;
auto iter = s1.find(2);
if (iter != s1.end())
cout << "s1에 2 존재" << endl;
else
cout << "s1에 2 존재하지않음" << endl;
cout << "mutiset<int>s3" << endl;
multiset<int> s3 = { 3,3,3,1,5,7,2 };
for (auto i : s3)
cout << i << ", ";
cout << endl;
cout << "greater<int> 내림차순" << endl;
set<int, greater<int>> s4 = {4,5,3,2,7,1};
for (auto i : s4)
cout << i << ", ";
cout << endl;
}