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


Функция parallel_radixsort

Упорядочивает элементы в указанном диапазоне в non по убыванию, используя алгоритм сортировки корня.Это стабильная функция сортировки, которая требует функции проекции, можно сортировать элементы проекта в беззнаковое целое число-как клавиш.По умолчанию требуется инициализация для сортированной элементов.

template<
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

Параметры

  • _Random_iterator
    Тип итератора диапазона ввода.

  • _Allocator
    Тип выделения памяти, совместимой с STL.

  • _Function
    Тип функции проекции.

  • _Begin
    Итератор с произвольным доступом адресацию положение первого элемента в диапазоне быть сортированным.

  • _End
    Итератор с произвольным доступом final адресации позиция одно за элементом в диапазоне быть сортированным.

  • _Alloc
    Экземпляр выделения памяти, совместимой с STL.

  • _Proj_func
    Определяемый пользователем объект функции проекции, который выполняет преобразование элемента в целое число.

  • _Chunk_size
    Размер блока mimimum, который будет разделенн в 2 для параллельного выполнения.

Заметки

Все перегруженные методы требуют места n * sizeof(T) дополнительной, где n число элементов, которые нужно сортировать и T тип элемента.Необходимо возвращает унарный functor проекции с сигнатурой I _Proj_func(T) клавиши если элемент, в котором T тип элемента и I беззнаковое целое число-как тип.

Если не предоставить функции проекции, то по умолчанию функция проекции, просто возвращает элемент используется для целочисленных типов.Функция не может компилировать, если элемент не является объединенного типа в отсутствие функции проекции.

Если не указать тип или экземпляр механизма распределения выделения памяти, std::allocator<T> STL используется для выбора буфер.

Алгоритм разделяет диапазон ввода в 2 и блока можно последовательно делит каждый блок в 2 sub-блока для выполнения в параллельном режиме.Необязательный аргумент _Chunk_size можно использовать для отображения алгоритму, что она обрабатывает < _Chunk_size блоки размером последовательно.

Требования

Заголовок: ppl.h

Параллелизм пространство имен:

См. также

Ссылки

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