Функция 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
Параллелизм пространство имен: