3. 配列に関するテンプレート 更新日:2021年8月7日 公開日:2021年8月4日 C++関数・テンプレート集プログラミング技術情報 元ネタ 3.1 配列の要素数を返す。 3.2 配列を動的に確保する。 3.3 配列の終端アドレスを取得する。 3.4 配列の最後の要素のアドレスを取得する。 ↑ C++関数・テンプレート集 続きを読む
2.2 値が範囲内か? 公開日:2021年8月4日 C++関数・テンプレート集プログラミング技術情報 今回は、指定した値が最小値から最大値の範囲に収まっているかどうかを判定する関数を作っていきます。 ちょっと紛らわしいのですが、ひとつめは指定した値が最大値または最小値に等しい場合も真になるvalue_in_range_i […] 続きを読む
2.1 複数の値が昇順になっているか? 公開日:2021年8月3日 C++関数・テンプレート集プログラミング技術情報 次の関数テンプレートは、複数の数値が昇順になっているかどうかを判定します。 [crayon-676f0da0543aa696363087/] 大小比較を素直に<=演算子を使うのではなく、<演算子と!演算子の組 […] 続きを読む
1.16 無符号整数型のMSB抽出用マスク 公開日:2021年8月2日 C++関数・テンプレート集プログラミング技術情報 今回は指定した符合無し整数型のMSB(上位ビット)だけが1で残りが0の値を求めます。具体例を挙げると、16ビットの符合無し整数型の場合は0x8000が、32ビットの符合無し整数型の場合は0x80000000が取得できます […] 続きを読む
2. 数値型に関するマクロ 更新日:2021年8月4日 公開日:2021年7月31日 C++関数・テンプレート集プログラミング技術情報 元ネタ 2.1 複数の値が昇順になっているか? 2.2 値が範囲内か? ↑ C++関数・テンプレート集 続きを読む
1.15 ビット数から8/10/16進数の桁数を求める。 公開日:2021年7月31日 C++関数・テンプレート集プログラミング技術情報 今回は整数値のビット数から、その値を表現するのに必要になる桁数を求めます。負の値は考慮していませんし、あくまでも数字の桁数ですので符号や3桁ごとのカンマなどは含みません。 桁数は16進数、8進数、10進数について求めます […] 続きを読む
1.14 2の冪乗か否かを判定する。 公開日:2021年7月30日 C++関数・テンプレート集プログラミング技術情報 今回は、与えられた値が2の累乗(べき乗)かどうかを判定する処理を作ってみます。 まずは整数定数式に対して静的に判定を行うためのメタ関数を定義してみましょう。 [crayon-676f0da0546ac519490231/ […] 続きを読む
1.13 無符号整数の最下位の ‘1’ のビットだけを抽出する。 公開日:2021年7月28日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、1が立っている最も下位のビットだけを残し、他のビットを0にします。 [crayon-676f0da05477d579821800/] 上のメタ関数では静的な処理しか行えませんので、通常の関数テンプレートに […] 続きを読む
1.12 最大公約数を求める。 公開日:2021年7月27日 C++関数・テンプレート集プログラミング技術情報 2整数の最大公約数を求めます。以下の条件を満たせば、必ずしも整数型でなくてもかまいません。 代入可能である <演算子が使用可能 %演算子が使用可能 [crayon-676f0da05485d181341547/] […] 続きを読む
1.11 整数除算 (商+剰余,C標準ライブラリ関数 div() のテンプレート版) 公開日:2021年7月26日 C++関数・テンプレート集プログラミング技術情報 同じような内容が続きますが、今回はC言語の標準ライブラリにあるdiv関数をテンプレート化したものです。 C++ではdiv関数が引数の型によって多重定義されています。しかし、返却値の型はC言語と同じで、div_t、ldiv […] 続きを読む