The Modern C++ Challenge 第5章 の続きです。
今回は第6章に挑戦します。
まずは目次を読む。
これだけで、お腹いっぱいになりそう。
第6章 アルゴリズムとデータ構造
- 優先キュー
- 循環バッファー
- ダブルバッファ
- 範囲内で最も頻度の高い要素
- テキスト ヒストグラム
- 電話番号リストのフィルタリング
- 電話番号リストの変換
- 文字列の順列をすべて生成する
- 映画の平均評価 54.ペアワイズアルゴリズム
- zip アルゴリズム
- アルゴリズムの選択
- ソートアルゴリズム
- ノード間の最短経路 59.イタチプログラム
- 人生ゲーム
問題文を読む。
問45 優先キュー
最大要素の一定時間の検索を提供するが、要素の追加と削除の対数時間の複雑さを持つ優先キューを表すデータ構造を記述します。
キューは最後に新しい要素を挿入し、先頭から要素を削除します。
デフォルトでは、キューは operator< を使用して要素を比較する必要がありますが、最初の引数が 2 番目の引数より小さい場合に true を返す比較関数オブジェクトをユーザーが提供できるようにする必要があります。
ソースコードを斜め読みして実行する。
一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。
第48問にて ジェネリックラムダ と std::cbegin を使っている。
コンソール(標準出力)に表示しているが、見にくい。
wxWidgets を使った例を紹介する。
第6章 のソースコードを Github に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter06