3.1 配列の要素数を返す。 公開日:2021年8月4日 C++関数・テンプレート集プログラミング技術情報 配列の要素数を知りたいことはよくあります。残念ながらsizeof演算子では配列全体のバイト数しか取得できませんので、要素数を知るには、配列全体のバイト数を1要素のバイト数で割る必要があります。 Cでは、元ネタにある次のよ […] 続きを読む
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-67408144a6b6f549359070/] 大小比較を素直に<=演算子を使うのではなく、<演算子と!演算子の組 […] 続きを読む
1.16 無符号整数型のMSB抽出用マスク 公開日:2021年8月2日 C++関数・テンプレート集プログラミング技術情報 今回は指定した符合無し整数型のMSB(上位ビット)だけが1で残りが0の値を求めます。具体例を挙げると、16ビットの符合無し整数型の場合は0x8000が、32ビットの符合無し整数型の場合は0x80000000が取得できます […] 続きを読む
手作業での最適化 公開日:2021年8月1日 プログラミング技術情報 先日、ときどきは小学生~高校生レベルの話題を取り上げるという話をしましたが、今回もそういった内容です。 ネット上でいろいろな方の意見を見ていると、「今どきのコンピュータは高速で、コンパイラの最適化性能も上がっているので手 […] 続きを読む
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-67408144a6e43407339326/ […] 続きを読む
1.13 無符号整数の最下位の ‘1’ のビットだけを抽出する。 公開日:2021年7月28日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、1が立っている最も下位のビットだけを残し、他のビットを0にします。 [crayon-67408144a6f0a578639333/] 上のメタ関数では静的な処理しか行えませんので、通常の関数テンプレートに […] 続きを読む