[C++] set unordered_set 응용

TNT·2025년 4월 27일
0

c++ 기초

목록 보기
14/17

보통 사람들은 set 을 사용할때
std::set 사용하면서 사용하는게 중복허용 하지않은 데이터를 관리를 하기 위헤서 사용을 많이 하는데
unordered_set도 알아두면 좋은메모리 관리 를 할수있을것이다

std::set

가장 큰 특징으로 나와있는건은 이진검색 트리 구현이며
기본값으로 오름차순으로 데이터를 정렬해주는게 큰 특징이다.

std::set 예시 사진

std::unordered_set

가장 큰 특징으로 해시 테이블 구현이며
여기는 정렬 된건 없다.

std::unordered_set 해시 테이블 예시

둘이 그러면 어때 사용해야하냐면
set은 정렬이기때문에 범위로 검색하는것도 용이하면 정렬 유지 가 된상태이고
unordered_set 정렬 없지만 평균속도는 set 보다는 빠른 속도의 성능을 보여준다.
대신 정렬은 안된 상태라서 성능의 저하 가능성이있다.

예시

그러면 이제 각자 사용을해야하는데 어디에 하는지 예시를 해보자면
std::set은 게임랭킹 늘 정렬된 상태여야하고 새로운 등수가 들어오거나 그런 순위로 비교를 하는경우에는 이것이 좋은경우다

std::set 활용 예시

반대로 std::unordered_set은 해당 유저의 인벤토리에 해당 아이템이있는지 확인하고 같은아이템은 하나로 합쳐서 보관 해야하는경우 이런경우에 사용하면 매우 좋게 사용할수 있다.

std::unordered_set 활용 예시

핵심
정렬된 순서가 중요하거나 범위로 검색해야하고 성능 보장이 필요하다면 std::set 사용
단순이 존재 여부 + 순서 중요하지않고 그냥 바로 입력 삭제 업데이트 등이 중요 하면 std::unordered_set 사용 (set보다 보통더 빠름)

profile
개발

0개의 댓글