PL 문법/C++

[C++] STL set / multiset 사용법

jHoon0223 2021. 8. 26. 21:50
  • set / multiset 이란?

set은 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로, <set> 헤더 안에 포함되어 있다. set은 쉽게 말해 하나의 집합이다. 값 삽입, 정렬, 탐색시에 굉장히 짧은 시간이 걸린다는 장점이 있고, 여러 STL과 마찬가지로 잘 사용하면 상당히 편리하다.

set과 multiset의 차이점은 값의 중복 허용 여부이다. set의 경우 하나의 값만을 저장하는 용도이고, multiset의 경우 중복된 값을 허용하여 저장하게 된다.

set은 원소의 값을 기준으로 삽입시 자동 정렬을 지원해준다.


  • set / multiset 기본 함수
생성
set<T>  //원하는 자료형 및 클래스 T를 통해 생성
iterator 관련
begin()  //맨 처음 iterator를 return
end()  //맨 마지막 iterator를 return
추가 및 삭제
insert(element)  //set에 추가
erase(element)  //set에서 element에 해당하는 모든 원소 삭제
erase(multiset.find(element))  //multiset에서 element 하나만 삭제 (해당 iterator 값 하나만 삭제)
clear()  //set에 있는 모든 원소 삭제
탐색
find(element)  //element에 해당하는 iterator return
count(element)  //multiset에 들어있는 element 개수 return, set의 경우 boolean type return
.etc
empty()  //비어있으면 true, 아니면 false return
size()  //set에 들어있는 원소의 수 return

  • 구현 코드
#include <iostream>
#include <set>

using namespace std;

int main() {
    set<int> s;
    multiset<int> ms;

    s.insert(1);
    s.insert(2);
    s.insert(4);
    s.insert(3);
    s.insert(5);
    s.insert(4);    //중복된 값이므로 set에 들어가지 않음

    ms.insert(1);
    ms.insert(2);
    ms.insert(4);
    ms.insert(3);
    ms.insert(5);
    ms.insert(4);   //중복된 값을 허용

    for (set<int>::iterator iter = s.begin(); iter != s.end(); iter++)
        cout << *iter << " ";

    cout << endl;

    for (multiset<int>::iterator iter = ms.begin(); iter != ms.end(); iter++)
        cout << *iter << " ";

    return 0;
}
728x90

'PL 문법 > C++' 카테고리의 다른 글

[C++] STL priority_queue 사용법  (0) 2024.02.14
[C++] STL map / multimap 사용법  (0) 2021.08.26
[C++] STL Vector 사용법  (0) 2021.07.13
[C++] C++ 표준 라이브러리  (0) 2021.07.13