parallel_buffered_sort 함수
비 내림차순 순서 또는 이진 조건자에 의해 지정된 순서 기준(병렬)에 따라 지정된 된 범위에 있는 요소를 정렬 합니다. 이 함수는 O(n) 추가 공간이 필요하다는 점을 제외하면 std::sort 와 비교 기반, 불안정, 내부 정렬인 점에서 의미적으로 유사하고, 기본적으로 요소들의 정렬, 기본 초기화를 필요로 합니다.
template<
typename _Random_iterator
>
inline void parallel_buffered_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Allocator,
typename _Random_iterator
>
inline void parallel_buffered_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Allocator,
typename _Random_iterator
>
inline void parallel_buffered_sort(
const _Allocator& _Alloc,
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Random_iterator,
typename _Function
>
inline void parallel_buffered_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Func,
const size_t _Chunk_size = 2048
);
template<
typename _Allocator,
typename _Random_iterator,
typename _Function
>
inline void parallel_buffered_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Func,
const size_t _Chunk_size = 2048
);
template<
typename _Allocator,
typename _Random_iterator,
typename _Function
>
inline void parallel_buffered_sort(
const _Allocator& _Alloc,
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Func,
const size_t _Chunk_size = 2048
);
매개 변수
_Random_iterator
입력 범위의 반복기 형식입니다._Allocator
STL의 종류는 호환 메모리 할당자입니다._Function
이진 비교의 형식입니다._Begin
저장할 범위에 있는 첫 번째 요소의 위치를 가리키는 임의 접근 반복기입니다._End
저장할 범위에 있는 마지막 요소의 하나 뒤 위치를 가리키는 임의 접근 반복기입니다._Alloc
STL 호환 메모리 할당자의 인스턴스입니다._Func
연속된 요소 순서에 의해 충족 되도록 비교 조건을 정의하는 조건자 함수의 사용자 정의 개체입니다. 이진 조건자는 두 개의 인수를 사용하고 만족할 때는 truefalse를 만족하지 못할 때는 를 반환합니다. 이 비교 함수는 엄격한 순서는 시퀀스의 요소 쌍에 적용해야 합니다._Chunk_size
병렬 실행을 위한 두 개로 분할된 청크의 최소 크기입니다.
설명
모든 오버 로드는 n * sizeof(T) 추가 공간이 필요합니다. n 은 정렬할 요소의 수이고 T 는 요소 형식입니다. 대부분의 경우에서 parallel_buffered_sort은 성능에서 parallel_sort통한 향상을 보여줍니다, 사용 가능한 메모리가 있을 경우 parallel_sort를 통해 사용해야 합니다.
이진 비교를 지정 하지 않은 경우 std::less 는 기본값으로 사용합니다. 이는 operator<() 을 제공하는 요소 형식이 필요합니다.
할당자 형식 또는 인스턴스가 지정되지 않은 경우, std::allocator<T> 가 버퍼를 할당 하는 데 사용됩니다.
알고리즘은 입력된 범위의 두 조각으로 나누고 연속적으로 각 청크 병렬에서 실행을 위해 두 개의 하위 청크로 나눕니다. 선택적 인수 _Chunk_size 는 직렬로 < _Chunk_size 크기의 청크를 처리하는 알고리즘을 나타내는데 사용할 수 있습니다.
요구 사항
헤더: ppl.h
네임스페이스: 동시성