Поделиться через


Функция 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

См. также

Ссылки

Пространство имен concurrency