次の方法で共有


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
    並べ替えられる範囲の最後の要素の一つ前の位置 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

参照

関連項目

concurrency 名前空間