parallel_buffered_sort 函数

在指定范围内将元素平行组合到非递减秩序,或基于二进制谓词指定的秩序规则中。 此函数语义与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
    并行执行将拆分成的两个区块的最小值。

备注

任何重载都另外需要 **n * sizeof(T)**空间 ,n 是要排序元素的数量,而 T 是元素类型。 在许多情况下 parallel_buffered_sort 通过 parallel_sort会显示性能改进,因此,如果有可用的内存,应用parallel_sort。

如果不提供二进制比较器, 需要元素类型提供运算符 operator<()std::less 会作为默认值。

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

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

要求

**标头:**ppl.h

**命名空间:**并发

请参见

参考

concurrency 命名空间