Функция parallel_buffered_sort
Упорядочивает элементы в указанном диапазоне в nondescending порядок, в соответствии с двоичным предиката, упорядочения критерию, указанному в параллельном режиме.Эта функция семантически схожа с std::sort в том, что она сравнить-основана, неустойчиво, сортировать, за исключением того, что требуется дополнительное место на месте O(n) и требуют по умолчанию инициализации для сортированными элементов.
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
Итератор с произвольным доступом final адресации позиция одно за элементом в диапазоне быть сортированным._Alloc
Экземпляр выделения памяти, совместимой с STL._Func
Определяемый пользователем объект функции предиката, который задает критерий сравнения, которые удовлетворяют последовательные элементы в этом упорядочении.Binary предикат принимает 2 аргумента и возвращает true, когда выполняется и false, если не выполняется.Эта функция должна создать простой компаратора строгий порядок в паре элементов последовательности._Chunk_size
Размер блока mimimum, который будет разделенн в 2 для параллельного выполнения.
Заметки
Все перегруженные методы требуют места n * sizeof(T) дополнительной, где n число элементов, которые нужно сортировать и T тип элемента.В большинстве случаев parallel_buffered_sort отобразит улучшение в производительности по сравнению parallel_sort и его следует использовать в parallel_sort при наличии памяти.
Если не указывать, то блок сравнения std::less бинарный используется в качестве значения по умолчанию, при этом тип элемента предоставляет оператор operator<().
Если не указать тип или экземпляр механизма распределения выделения памяти, std::allocator<T> STL используется для выбора буфер.
Алгоритм разделяет диапазон ввода в 2 и блока можно последовательно делит каждый блок в 2 sub-блока для выполнения в параллельном режиме.Необязательный аргумент _Chunk_size можно использовать для отображения алгоритму, что она обрабатывает < _Chunk_size блоки размером последовательно.
Требования
Заголовок: ppl.h
Параллелизм пространство имен: