std::vector는 std::sort로 정렬되지만 std::list처럼 전용 sort함수가 없다. 반대로 std::list는 전용 sort가 있지만 std::sort는 사용할 수 없다. 그러면 왜 std::list는 std::sort를 사용할 수 없을까 알아봤다
stackoverflow를 찾아보니 std::sort는 랜덤 엑서스가 가능한 std::vector나 std::deque만 사용 가능하다고 한다. 그래서 당연하게도 연관 컨테이너(Associative Container)에도 사용이 불가능하다
std::sort는 quick sort, heap sort, Insertion sort를 조합한 알고리즘인 Intro sort를 사용해서 내부적으로 구현되어 있다. std::list::sort는 구현에 따라 다르지만 stable하고 time complexity가 O(nlogn)인 것만 정해져있고 구현은 특정 알고리즘으로 구현된게 아니라 구현하기에 달려있다고 한다
'공부 > C || C++' 카테고리의 다른 글
remove와 remove_if (0) | 2022.09.30 |
---|---|
C++ std::list vs std::vector (0) | 2022.09.26 |
static 멤버 함수가 static이 아닌 멤버 참조가 안되는 이유, static 멤버 함수에서 this를 사용할 수 없는 이유 (1) | 2022.09.25 |
C++ 클래스 상속, 다중 상속, 가상 함수 그리고 다형성(Inheritance & virtual function & polymorphism) (1) | 2022.09.25 |
static 변수와 전역 변수와 비교 (0) | 2022.09.23 |