parallel_radixsort 函数

在指定范围将元素组合到非降序排序使用基数排序算法中去。 这是一个稳定排序,它需要一个可以将元素按无符号整数键排序的投影函数。 默认初始化对于元素排序是必需的。

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
    排序要搜索的范围中最后一个元素的下一位置的随机访问代器。

  • _Alloc
    STL 兼容内存分配器的实例。

  • _Proj_func
    将元素移入一个整数值的用户定义的射影函数对象。

  • _Chunk_size
    并行执行将拆分成的两个区块的最小值。

备注

任何重载都另外需要 n * sizeof(T)空间 ,n 是要排序元素的数量,而 T 是元素类型。 要求具有签名I _Proj_func(T) 的一元投影函数返回元素,同时使元素类型为 T,且 I 是无符号整数的类型。

如果未提供射影一个函数,返回元素的默认射影函数为整数类型。 如果在没有射影函数时元素不是整型,函数不能编译。

如果不提供将程序类型或实例,STL 内存分配器 std::allocator<T> 用于分配缓冲区。

算法将输入值域分为两种块并成功地将每个块分成两个能并行执行的子块。 可选参数 _Chunk_size 可用来指示为算法应按顺序应处理块的大小 < _Chunk_size。

要求

**标头:**ppl.h

**命名空间:**并发

请参见

参考

concurrency 命名空间