set

보물창고·2021년 8월 8일
0

stl 잘 사용하기!

목록 보기
3/9
post-custom-banner

set 정의

: 트리로 이루어진 stl로 , 따라서 계층구조로 되어 있음.
루트 노드를 통해 삽입과 삭제, 탐색( 이 때는 멤버로 탐색 할 경우에 국한됨.)
시 logN의 비용을 가짐.

디폴트 우선 순위는 less임.

greater를 이용해 내림차순으로

멤버를 이용해 find를 해야 logN의 비용을 가져옴.

클래스를 넣을 경우

  • set은 일반적으로 정렬을 자동적으로 수행하므로,
    유저가 class 형식을 set에 사용한다면 연산자 오버로딩
    즉, operator < 함수를 정의해주어야 한다.
    그리고 operator < 함수 내부에서는 비교하는 키값이 같을때와
    다를때를 비교해서 반환해주어야 한다.

  • 예제

  • 만약에 priority 변수가 동일할 경우에 대한 예외처리를 하지 않는다면 어떻게 될까? -> set의 특성으로 마지막에 삽입하려는 값은 삽입이 불가능하다.

느낀점

: set이나 map에 class를 키값으로 사용할 경우에는 유저가 직접 연산자 비교 함수를 사용해서 구현해야 하고, 내부에서는 키값이 같을 경우에 대한 처리를 해야 한다.
-> 에이스타, bfs로 길찾기 구현에 사용된다.

profile
🔥🔥🔥
post-custom-banner

0개의 댓글