언어/C++

[C++] set, multiset 간단 사용법

시간빌게이츠 2022. 4. 5. 19:09
반응형

선언

  • set은 중복을 없애고 입력할 때 정렬이 되어서 입력되는게 특징이다.
  • multiset은 중복을 허용하는것만 다르고 나머지는 set과 같다.
  • set도 마찬가지로 정렬 기준을 바꿀 때는 priority queue와 마찬가지로 구조체를 선언하거나 stl에서 지원하는 것을 사용하면됩니다.
  • 이것에 대한 설명은 https://hagisilecoding.tistory.com/60 여기에서 구조체 구현 부분을 보시 면 자세히 나와있습니다.
#include <set> set<int> s1 // 중복없애고 정렬(default : 오름차순) 
       multiset<int> s2 // 중복허용 정렬(default : 오름차순) 
       set<int, greater<int>> s3 // 내림차순 정렬 
       set<int> s4(s2); // 선언 후 복사한 값으로 초기화 
       set<int> s4 = s2 // 선언 후 복사한 값으로 초기화

삽입, 삭제 등 기본 사용법

    s.insert(1); // 1 삽입
    s.clear(); // 모든 원소 삭제

    s.erase(iterator); // iterator가 가르키는 값 삭제
    s.erase(s.begin(),s.end()) // 범위안 모든 원소 삭제
    s.erase(x) // x값 모두 삭제

    auto iter = s.end();
    iter--;
    s.erase(iter); // 맨 뒤의 값 삭제

    for(auto iter = s.begin(); iter!=s.end(); iter++){
        cout << *iter <<  " ";
    } // 모든 원소 출력 
  • insert : 삽입
  • clear : 모든 원소 삭제
  • begin() : 첫 시작점 리턴값 iterator
  • end() : 끝나는점 리턴값 iterator
  • count(k) : k의 원소 개수 반환
  • size() : 모든 원소의 개수 반환

 

응용 최대값만 출력하고 싶다면?

    auto iter = s.end();
    iter--;
    cout << *iter;
  • 이런식으로 iterator를 이용하여 최대값을 출력할 수 있다.
반응형