Функция parallel_sort
Упорядочивает элементы указанного диапазона в неубывающую последовательность или в соответствии с критерием упорядочивания, указанным параллельно бинарным предикатом. Эта функция семантически схожа с std::sort, так как она основана на сравнении, неустойчива, сортирует на месте.
template<
typename _Random_iterator
>
inline void parallel_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Random_iterator,
typename _Function
>
inline void parallel_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Func,
const size_t _Chunk_size = 2048
);
Параметры
_Random_iterator
Тип итератора входного диапазона._Function
Тип бинарного функтора сравнения._Begin
Итератор случайного доступа, обращающийся к позиции первого элемента в сортируемом диапазоне._End
Итератор прямого доступа, обращающийся к позиции первого после последнего элемента в рассматриваемом диапазоне._Func
Определяемый пользователем объект функции предиката, который определяет критерии сравнения, которые будут соответствовать идущим подряд элементам. Двоичный предикат принимает два аргумента и возвращает true, если он удовлетворяется и false, если не удовлетворяется. Эта функция компаратора должна создать строгое слабое упорядочение пар элементов последовательности._Chunk_size
Минимальный размер блока, который будет разбит на два для параллельного выполнения.
Заметки
Первый перегруженный метод использует бинарный компаратор std::less.
Второй перегруженный метод использует предоставленный бинарный компаратор, который должен иметь сигнатуру bool _Func(T, T), где T - тип элементов в диапазоне.
Алгоритм делит входной диапазон на два блока и последовательно делит каждый блок на два подблока для параллельного выполнения. Необязательный аргумент _Chunk_size можно использовать, чтобы показать алгоритму, что нужно обрабатывать блоки размера < _Chunk_size последовательно.
Требования
Заголовок: ppl.h
Пространство имен: concurrency