c++ stl set container

추가 및 삭제
  • insert(element): 세트에 element를 추가
  • erase(element): 세트에서 해당하는 element를 삭제
  • clear(): 세트에 있는 모든 원소 삭제
조회
  • find(element): element에 해당하는 iterator를 반환
  • count(element): element에 해당하는 개수를 반환
기타
  • empty(): 비어있으면 true 아니면 false를 반환
  • size(): 세트에 포함되어 있는 원소들의 수를 반환
특징
  • 중복을 허용하지 않는다.
  • 중복을 허용하려면 multiset을 사용해야한다.
  • s.begin();
    - 맨 첫번째 원소를 가리키는 반복자를 리턴(참조)합니다.
    - iter = s.begin(); 으로 사용합니다.
  • s.end();
    - 맨 마지막 원소(의 다음)를 가리키는 원소의 끝부분을 알 때 사용합니다.
    - 반복자를 리턴(참조)합니다.
    - iter = s.end();

  • s.rbegin();
  • s.rend();
    - begin(), end() 와 반대로 작동하는 멤버함수들입니다.
    - 역으로 출력하고 싶을때 사용합니다.
  • s.clear();
    - 모든 원소를 제거합니다.

  • s.count(k);
    - 원소 k 의 갯수를 반환합니다

    s.empty();
    - set s가 비어있는지 확인합니다.
    • s.insert(k);
      - 원소 k를 삽입합니다.
      - 삽입시에 자동으로 정렬된 위치에 삽입됩니다.
      - 삽입이 성공 실패에 대한 여부는 리턴값 (pair<iterator, bool>) 으로 나오게됩니다.
      - pair<iterator, bool>에서 pair.first는 삽입한 원소를 가리키는 반복자 이고, pair.second는 성공(true), 실패(false)를 나타냅니다.

    • s.insert(iter, k);
      - iter가 가리키는 위치 부터 k를 삽입할 위치를 탐색하여 삽입합니다.
    • s.erase(iter);
      - iter가 가리키는 원소를 제거합니다.
      - 제거 한다음 제거 한 원소 다음 원소를 가리키는 반복자를 리턴합니다.

    • s.erase(start, end);
      - [start, end) 범위의 원소를 모두 제거합니다.

    • s.find(k);
      - 원소 k를 가리키는 반복자를 반환합니다.
      - 원소 k가 없다면 s.end() 와 같은 반복자를 반환합니다.
    • s2.swap(s1);
      - s1과 s2를 바꿔줍니다.

    • s.upper_bound(k);
      - 원소 k가 끝나는 구간의 반복자 입니다.

    • s.lower_bound(k);
      - 원소 k가 시작하는 구간의 반복자 입니다.
    • s.equal_range(k);    
      - 원소 k가 시작하는 구간과 끝나는 구간의 반복자 pair 객체를 반환합니다.
      - upper_bound(k), lower_bound(k) 가 합쳐진 멤버함수
    • s.value_comp();
    • s.key_comp();
      - 정렬 기준 조건자를 반환합니다.
      - set 컨테이너에서는 두개의 함수 반환형이 같습니다.

    • s.size();
      - 사이즈(원소의 갯수)를 반환합니다.

    • s.max_size();
      - 최대 사이즈(남은 메모리 크기)를 반환합니다.

 

[ 문제1 ] https://www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

 

[ 문제2 ] https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

[ 문제3 ] https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 

Posted by 명문코딩컴퓨터
,