[effective STL] 항목 31 : 정렬시 선택 사항들을 제대로 파악
2016. 2. 27. 22:29ㆍ프로그래밍/Effective STL
728x90
728x90
정리
- vector, string, deque, c++ array에 대해 전체 정렬을 수행할 필요가 있을 때는 sort나 stable_sort를 사용한다.
- 상위 n개의 요소만 순서에 맞추려면 partial_sort를 사용한다.
- 상위 n개의 요소를 뽑되 순서를 고려할 필요가 없다면 nth_element가 적합하다.
- 표준 시퀀스 컨테이너가 있고, 이 컨테이너의 요소들을 어떤 기준에 만족하는 것들과
그렇지 않은 것들을 모아 구분하고 싶다면 partition이나 stable_partition을 고려해본다.
- 사용하고 있는 데이터가 list인 경우엔 partition과 stable_partiton은 직접 사용할 수 있으며
sort와 stable_sort 알고리즘 대신에 list:sort 멤버 함수를 사용할 수 있다.
- 만일 partial_sort나 nth_element의 기능이 필요하다면 간접적으로 사용하는 방법이 있지만 상황에 따라 적절하게 구현해야된다.
성능
성능은? 항상 고려해야하는 문제.
partition > stable_partition > nth_element > partial_sort > sort > stable_sort
728x90
반응형
'프로그래밍 > Effective STL' 카테고리의 다른 글
[effective STL] 항목 34 : 정렬된 범위 동작 알고리즘들 (0) | 2016.03.19 |
---|---|
[effective STL] 항목 33 : remove 같은 알고리즘 사용할 때 포인터 컨테이너 주의 (0) | 2016.02.29 |
[effective STL] 항목 32 : 요소 정말로 제거하기 (2) | 2016.02.28 |
[effective STL] 항목 30 : 알고리즘의 데이터 기록 범위는 충분히 크게 잡자. (0) | 2016.02.20 |
[effective STL] 항목 28 : reverse_iterator 쓸 때 base() 잘 쓰기 (0) | 2016.02.19 |
[effective STL] 항목 27 : const_iterator -> iterator는 distance와 advance를 사용하자. (2) | 2016.02.15 |
[effective STL] 항목 26 : 여러 iterator 중 쓸만한 것은 결국 iterator (2) | 2016.02.10 |