parallel_sort
[algorithms.parallel_sort]
シーケンスをソートする関数テンプレート。
// <oneapi/tbb/parallel_sort.h> ヘッダーで定義
namespace oneapi {
namespace tbb {
template<typename RandomAccessIterator>
void parallel_sort( RandomAccessIterator begin, RandomAccessIterator end );
template<typename RandomAccessIterator, typename Compare>
void parallel_sort( RandomAccessIterator begin, RandomAccessIterator end, const Compare& comp );
template<typename Container>
void parallel_sort( Container&& c );
template<typename Container>
void parallel_sort( Container&& c, const Compare& comp );
} // namespace tbb
} // namespace oneapi
要件:
RandomAccessIterator
タイプは、 [random.access.iterators] ランダム・アクセス・イテレーター要件、および [swappable.requirements] ISO C++ 標準の ValueSwappable 要件を満たす必要があります。Compare
タイプは、[alg.sorting] ISO C++ 標準の 比較 タイプの要件を満たしている必要があります。Container
タイプは、イテレーターが [random.access.iterators] の ランダム・アクセス・イテレーター 要件と [swappable.requirements] ISO C++ 標準の Swappable 要件を満たす、ContainerBasedSequence の要件を満たす必要があります。逆参照された
RandomAccessIterator
またはContainer
イテレーターのタイプは、ISO C++ 標準の [moveassignable] セクションの MoveAssignable 要件と、ISO C++ 標準の [moveconstructible] セクションの MoveConstructible 要件を満たす必要があります。
シーケンスまたはコンテナーをソートします。ソートは不安定で再現性がありません。等しいキーの相対的な順序は保持されず、同じシーケンスを再度ソートした場合でも同じ結果になる保証はありません。
parallel_sort( begin, end, comp )
を呼び出すと、相対的な順序を決定するため引数 comp
を使用して、シーケンス [begin, end) をソートします。comp( x, y )
が true
を返す場合、x はソートされたシーケンスで y の前に現れます。
parallel_sort( begin, end )
呼び出しは、parallel_sort( begin, end, comp )
と同等であり、comp は operator< を使用して相対的な順番を決定します。
parallel_sort( c, comp )
の呼び出しは、parallel_sort( std::begin(c), std::end(c), comp )
と同等です。
parallel_sort( c )
呼び出しは、parallel_sort( c, comp )
と同等であり、comp は operator< を使用して相対的な順番を決定します。
複雑性
parallel_sort
は、平均時間計算量 O(N×log(N)) の比較ソートです。ここで N はシーケンスの要素の数です。parallel_sort
は実行時間を短縮するため同時に実行できます。