11. 双方向線型リスト処理テンプレート 公開日:2021年9月10日 C++関数・テンプレート集プログラミング技術情報 元ネタ C++では、双方向リストはわざわざ話題として取り上げるまでもありません。なぜなら、std::listクラステンプレートを使えば解決するからです。 ↑ C++関数・テンプレート集 続きを読む
10.8 通算日数⇒グレゴリオ暦/ユリウス暦変換 公開日:2021年9月10日 C++関数・テンプレート集プログラミング技術情報 前回同様、Wikipediaの計算式を元に修正ユリウス日から年月日の変換を行います。ユリウス日から修正ユリウス日を求めるには2400000.5を引くだけですので、今回は割愛することにしました。 それではまず、修正ユリウス […] 続きを読む
10.7 グレゴリオ暦/ユリウス暦⇒通算日数変換 公開日:2021年9月9日 C++関数・テンプレート集プログラミング技術情報 ユリウス通日に関して、元ネタでは紀元前1年の3月1日を0日目として計算するアルゴリズムが紹介されているようです。ところがWikipediaで調べてみると、実際には、ユリウス日はユリウス暦紀元前4713年1月1日の正午から […] 続きを読む
10.6 ライブラリ関数を使わずに指定日時(年月日曜時)が夏時間か判定する。 公開日:2021年9月7日 C++関数・テンプレート集プログラミング技術情報 これについても、C++になったからといってとくに変わりませんので、基本は元ネタと同じようにすればOKです。ただし、若干そのままではうまくいかないところがありますので、その部分だけはケアしてあげることにしましょう。また、せ […] 続きを読む
10.5 同じ月の別の日の曜日を求める。 公開日:2021年9月6日 C++関数・テンプレート集プログラミング技術情報 これはC++で書いても元ネタと変わらないのですが、せめてconstexprを付けた関数として実装することにしましょう。 [crayon-673f991a8ede8491180704/] 今回はこれだけです。メタ関数を作っ […] 続きを読む
10.4 ○月D日(W曜)は、その月の何回目のW曜日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 今回は正直言って何に使うのかわかりませんが、元ネタの流れに沿って、メタ関数とconstexpr版それぞれを実装してみます。 まずはメタ関数版からです。次のメタ関数は、○月Day日(dow曜日)が、その月の何回目のdow曜 […] 続きを読む
Javaではビット操作を行うのにいったん文字列に変換してから整数に戻す話 公開日:2021年9月5日 プログラミング技術情報 以前、いっしょに仕事をしていた技術者から聞いて驚いたことがあります。Javaでは、ビット操作を行うときにはいったん文字列を介して行うというのです。私はJava界隈の事情には明るくないのですが、本当にそうなんでしょうか? […] 続きを読む
10.3 ○月のN回目のW曜日は何日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、ある月のN回目のD曜日の日付を求めます。D1には、その月の1日の曜日を指定してください。 [crayon-673f991a8f041031389262/] せっかくですのでconstexprを使った関数版 […] 続きを読む
10.2 日付が有効か否かの判定(グレゴリオ暦/ユリウス暦) 公開日:2021年9月4日 C++関数・テンプレート集プログラミング技術情報 指定した日付が有効かどうかを判定する関数テンプレートです。元ネタとは異なり、std::tm構造体のtm_monに合わせて、月は0~11で指定するようにしています。また、閏年用のテーブルも持たせることで、コードを単純化しま […] 続きを読む
10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 公開日:2021年9月2日 C++関数・テンプレート集プログラミング技術情報 元ネタでは、負の表現に1の補数を使う処理系に配慮した上で、負の年にも対応しようとしていますが、一応、高速判定が売りですので、ここでは無駄はバッサリ切り捨てて、1年~のみ対応としました。また、ユリウス暦とグレゴリオ暦を動的 […] 続きを読む