次の方法で共有


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
    並べ替えられたする範囲の最後の要素 1 を超える位置を示すランダム アクセス反復子。

  • _Alloc
    STL の互換性のあるメモリ アロケーターのインスタンス。

  • _Func
    順序で連続する要素を満たす比較の要件を定義するユーザー定義の述語関数オブジェクト。バイナリ述語が満たされなかった場合に完了したら 2 個の引数を受け取り、 truefalse を返します。この比較子関数は、シーケンスの要素のペアに厳密弱順序を設定する必要があります。

  • _Chunk_size
    並列実行の 2 に分割するチャンクの mimimum のサイズ。

解説

すべてのオーバーロードは n を並べ替えたする要素の数を T が要素の型である n * sizeof(T) の領域を追加する必要があります。ほとんどの場合 parallel_buffered_sort は parallel_sort上のパフォーマンスの機能強化を示し、使用できるメモリがある場合 parallel_sort に使用する必要があります。

指定するバイナリ比較子 std::less は、要素の型が演算子を提供するように要求する **operator<()**既定として使用されます。

アロケーターの型またはインスタンスを指定するバッファーを割り当てると、 STL のメモリ アロケーター std::allocator<T> が使用されます。

アルゴリズムは 2 個のチャンクに入力範囲に分割して、実行用の 2 種類のサブ チャンクに順次各チャンクを並列に分割します。省略可能な引数 _Chunk_size でアルゴリズムに表示にできますが、連続してください。サイズの < _Chunk_size ハンドルのチャンク使用できます。

必要条件

ヘッダー: ppl.h

名前空間: の同時実行

参照

関連項目

concurrency 名前空間