Namespaces
Variants

std::hive<T,Allocator>::sort

cppreference.net에서
 
 
 
 
template< class Compare = std::less<T> >
void sort( Compare comp = Compare() );
(C++26부터)

요소들을 정렬합니다. 메모리를 할당할 수 있습니다. 요소들은 comp을(를) 사용하여 비교됩니다. 동등한 요소들의 순서는 유지되지 않습니다.

*this에 있는 요소를 참조하는 참조자, 포인터 및 반복자와, past-the-end 반복자는 무효화될 수 있습니다.

T은(는) hive에 대해 MoveInsertable, MoveAssignable, 그리고 Swappable이어야 합니다. 그렇지 않으면, 동작이 정의되지 않습니다.

매개변수

comp - 비교 함수 객체 (즉, Compare의 요구 사항을 만족하는 객체) 로, 첫 번째 인수가 두 번째 인수보다 true작으면 (즉, 순서가 앞서면) ​을(를) 반환합니다.

비교 함수의 서명은 다음과 동등해야 합니다:

bool cmp(const Type1& a, const Type2& b);

서명에 const&이(가) 필요하지는 않지만, 함수는 전달된 객체를 수정해서는 안 되며, Type1 및 Type2 유형의 모든 값 (const일 수 있음) 을 값 카테고리에 관계없이 받아들일 수 있어야 합니다 (따라서, Type1&는 허용되지 않으며, Type1도 Type1이동이 복사와 동등한 경우가 아니라면(C++11부터) 허용되지 않습니다).
Type1 및 Type2 유형은 <T,Allocator>::const_iterator 유형의 객체가 역참조된 후에 암시적으로 두 유형 모두로 변환될 수 있어야 합니다. ​

유형 요구 사항
-
Compare는 Compare의 요구 사항을 충족해야 합니다.

복잡도

N·log(N) 번의 comp 적용, 여기서 N은(는) size()입니다.

예외

예외가 발생하면 *this에 있는 요소의 순서는 지정되지 않습니다.

참고 사항

std::sort와 ranges::sort는 임의 접근 반복자를 필요로 하므로 hive와 함께 사용할 수 없습니다.

예시

#include <hive>
#include <functional>
#include <print>

int main()
{
    std::hive<int> hive{3, 1, 4, 1, 5, 9, 2, 6, 5};
    std::println("Initially:  {}", hive);

    hive.sort();
    std::println("Ascending:  {}", hive);

    hive.sort(std::greater<int>());
    std::println("Descending: {}", hive);
}

출력:

Initially:  [3, 1, 4, 1, 5, 9, 2, 6, 5]
Ascending:  [1, 1, 2, 3, 4, 5, 5, 6, 9]
Descending: [9, 6, 5, 5, 4, 3, 2, 1, 1]

같이 보기

연속된 중복 요소를 제거합니다
(공개 멤버 함수)