parallel_buffered_sort 函数

在一个指定大小的元素到一个 nondescending 的顺序,或基于二进制谓词指定的一个排序的条件,并行。 此函数语义相似 std::sort 因为它是基于比较,而不稳定,就地排序,但它需要 O(n) 额外的空间,并提供用于排序的元素需要默认初始化。

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

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

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

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

参数

  • _Random_iterator
    输入范围的迭代器类型。

  • _Allocator
    STL 兼容性内存分配器的类型。

  • _Function
    二进制比较的类型。

  • _Begin
    解决一个随机访问迭代器第一个元素的位置在进行排序的大小。

  • _End
    解决一个随机访问迭代器通过最终元素的位置一在进行排序的大小。

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

  • _Func
    定义连续的元素将足够的比较条件顺序的用户定义的谓词函数对象。 二进制谓词采用两个参数并返回 true ,在满足和 false ,在未满足。 此比较函数必须实施强弱顺序对序列的元素。

  • _Chunk_size
    将拆分为两个并行执行的区块的 mimimum 范围。

备注

所有重载需要 n * sizeof(T) 额外的空间, n 是排序的元素数,因此, T 是元素类型。 在许多情况下 parallel_buffered_sort 在 parallel_sort的性能将显示改进,因此,您应使用它。 parallel_sort,如果有可用的内存。

如果您没有提供二进制比较 std::less 用作默认值,需要元素类型的运算符 operator<()

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

算法将输入范围划分为两个区块和并行连续将每个区块为执行的两个子区块。 可选参数 _Chunk_size 可用于指示到算法它按顺序应范围 < _Chunk_size 处理块。

要求

**标头:**ppl.h

命名空间: 并发

请参见

参考

concurrency 命名空间