ソート

このサブディレクトリーには、書籍のソートのサンプルと実行コード(common/test_sort.cpp) が含まれています。実行コードは、テストと時間計測を行います。

エラッタ

ソートのサンプルが書かれたとき、C++11 はまだ策定中でした。その後、インテル・コンパイラー 12.1 Visual Studio 2010 コンパイラーでコンパイルされたコードを実行する際、std::move const 修飾左辺値を使用すべきではないことに気づきました。この問題はここでは修正されており、書籍よりも少ない const 修飾子が少ないことに気づかれるでしょう。std::move を使用していても、C++98 コンパイラーでコンパイルできるはずです。

クイックソート

書籍中のリスト番号

ファイル

説明

8.9

common/quicksort_util.h

クイックソートの実装例で使用される共有コード

8.10

cilkplus/quicksort_cilk_recursive.h

Cilk Plus による完全再帰の並列クイックソート

8.11

cilkplus/quicksort_cilk_semirecursive.h

Cilk Plus による準再帰の並列クイックソート

8.12

tbb/quicksort_tbb_taskgroup.h

TBB による準再帰の並列クイックソート

8.13

tbb/quicksort_tbb_task.h

リスト 8.11 における Cilk Plus のスペース保障を実現したTBB のクイックソート

マージソート

書籍中のリスト番号

ファイル

説明

13.1

serial/serial_merge.h

シリアルでのマージ

13.2

cilkplus/merge_cilk.h

Cilk Plus による並列マージ

13.3

tbb/merge_tbb.h

TBB による並列マージ。TBB のアルゴリズム全体。書籍では、Cilk Plus との差のみを示しています。

追加

openmp/merge_openmp.h

OpenMP による並列マージ

13.4

cilkplus/merge_sort_cilk.h

Cilk Plus による並列マージソート

追加

tbb/merge_sort_tbb.h

TBB による並列マージソート

追加

openmp/merge_sort_openmp.h

OpenMP による並列マージソート

サンプルソート

書籍中のリスト番号

ファイル

説明

14.1

common/sample_sort.h

サンプルソートの実装例で使用される共有コード

14.2

common/map_keys_to_bins_cilk.h

Cilk Plus による bin へのキーのマップ

追加

tbb/map_keys_to_bins_tbb.h

TBB サンプルソートによる bin へのキーのマップ。リスト 14.2 との違いは、配列表記の代わりに std::fill_n を使用していることです。

14.3

cilkplus/bin_cilk.h

Cilk Plus による並列キー・ビニング.

追加

tbb/bin_tbb.h

TBB による並列キー・ビニング.

14.4

cilkplus/repack_and_subsort_cilk.h

Cilk Plus による再パックとサブソート

追加

tbb/repack_and_subsort_tbb.h

TBB による再パックとサブソート

14.5

common/destructive_move.h

Cilk Plus による破壊移動

 

戻る