The Modern C++ Challenge 第4章 の続きです。
今回は第5章に挑戦します。
まずは目次を読む。
第4章 日付と時間
- 計測機能実行時間
- 2 つの日付の間の日数
- 曜日
- 年間通算日と週
- 複数のタイムゾーンの会議時間
- 月間カレンダー
問題文を読む。
問39 関数の実行時間の測定
関数の実行時間を (任意の数の引数で) 必要な期間 (秒、ミリ秒、マイクロ秒など) で測定できる関数を作成します。
ソースコードを斜め読みして実行する。
第40問 から 第44問 にて Date ライブラリを使っている。
第43問は、すんなり実行できなかった。 tz.cpp を一緒にビルドする。 これが libcurl を必要とする。 下記のようなビルドコマンドになった。
g++ main.cpp ../../libs/date/src/tz.cpp -Wall -Werror -std=c++11 -I../../libs/date/include/ -I../../libs/date/include/date/
pkg-config --cflags --libs libcurl
-o bin/problem_43
さらに実行時に tzdata を必要とする。
複数のタイムゾーンに対応しているライブラリとして
cctz を紹介する。
Macの場合、brewコマンドでインストールできるので、
手間がかからない。
一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。
第5章には Modern C++ というところは見当たらなかった。
C言語に書き直してみた。 カレンダーは難しいかと思ったが、 ツェラーの公式を使って、すんなり書けた。
第5章 のソースコードを Github に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter05