3.3 配列の終端アドレスを取得する。 公開日:2021年8月7日 C++関数・テンプレート集プログラミング技術情報 ポインタを使って配列の要素を指すことはよくあります。ところが配列の範囲外であっても、ひとつだけ有効なアドレスが存在します。それが配列の最終要素のひとつ先を指すアドレスです。 C++プログラマーであれば、そういう最小要素の […] 続きを読む
3.2 配列を動的に確保する。 公開日:2021年8月6日 C++関数・テンプレート集プログラミング技術情報 C++は便利なもので、new演算を使用すれば、配列を動的に割り付けることが簡単にできます。ただし、どうしても細かいメモリ管理を自分で行わないといけない状況でなければ、スマートポインタを使うのが普通です。 C++03までで […] 続きを読む
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-676dfb139f8d9261735366/] 大小比較を素直に<=演算子を使うのではなく、<演算子と!演算子の組 […] 続きを読む
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-676dfb139fba1398485834/ […] 続きを読む