C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++でコンストラクタを使ってconstメンバ変数を初期化する方法

    この記事では、C++においてconst型のメンバ変数をコンストラクタで初期化する方法を解説します。constメンバ変数は、宣言と同時に初期化するか、コンストラクタの「メンバイニシャライザリスト(初期化子リスト)」を使って初期化しなければなりません。const変数は後から値を代入できないため、コンストラクタ本体内での代入では初期化できず、イニシャライザリストの使用が必須となります。イニシャライザリストは、クラスのデータメンバを初期化するための仕組みです。コンストラクタ名の後にコロン(:)を付け、その後に初期化したいメンバをカンマ区切りで列挙して記述します。コード例#include <ios

  2. C++で文字列の辞書式順序における次の順列を生成する方法

    本記事では、C++を使って文字列の辞書式順序における次の順列を生成する方法を解説します。 辞書式順序の次の順列とは? 辞書式順序における「次の順列」とは、現在の順列よりも辞書式に大きい順列の中で、最も小さいものを指します。たとえば、「ACB」の次の順列は「BAC」です。 ただし、すべての文字列に次の順列が存在するわけではありません。たとえば「BBB」や「DCBA」のように、すでに降順に並んでいる(それ以上大きい並び替えが存在しない)場合には、次の順列はありません。 next_permutation() 関数を使う C++では、<algorithm>ヘッダーに用意されている next

  3. C++でオーバーロードできない関数のケースを徹底解説

    はじめにC++では、同じ名前でも引数の型や個数が異なる複数の関数を定義できる「関数オーバーロード」という強力な機能が用意されています。しかし、すべての場合でオーバーロードが成立するわけではなく、条件によってはコンパイルエラーになります。本記事では、C++において関数をオーバーロードできない代表的なケースを、具体的なコード例とともにわかりやすく解説します。1. 戻り値の型だけが異なる場合関数のシグネチャ(引数の型と個数)が完全に同一で、戻り値の型のみが異なる場合、オーバーロードすることはできません。戻り値の型はオーバーロード解決の判断材料にならないためです。int my_func() {&nbs

  4. C++におけるsize_tとintの違いとは?

    C++におけるsize_tとintの違いC++プログラミングでは、size_tとintはよく似た整数型に見えますが、実際には重要な違いがあります。ここでは、両者の違いについて詳しく解説します。規格上の保証C++の標準規格によれば、intとsize_tはいずれも少なくとも16ビットの整数型であることが保証されています。ただし、これはあくまで最小値であり、実際のサイズは処理系(コンパイラやプラットフォーム)によって異なります。64ビット環境でのサイズの違い一般的な64ビットシステムでは、size_tは64ビット幅になる一方、unsigned intは32ビット幅にとどまります。このため、両者を相互

  5. LinuxでC++のメモリ使用量を取得する方法【/proc/self/statの活用】

    本記事では、Linux環境上で動作するC++プログラムのメモリ使用量を取得する方法を解説します。 Linuxでは、実行中のプロセスに関する詳細な情報が/proc/self/statファイルから取得できます。このファイルには、PIDやプロセス名だけでなく、メモリに関する統計情報も含まれています。ここでは、その中から「仮想メモリサイズ(Virtual Memory)」と「常駐セットサイズ(Resident Set Size)」の2つの値を取り出す方法を紹介します。 仮想メモリと常駐セットサイズの違い 仮想メモリ(vm_usage)とは、プロセスに割り当てられた仮想アドレス空間全体のサイズを指します

  6. C++で整数の桁数を求める2つの方法を徹底解説

    C++で整数が何桁であるかを調べる方法を紹介します。まずは基本的な伝統的な手法から見ていき、その後、より短いコードで求める方法も解説します。 方法1:10で割り続けてカウントする 最初の方法は、数値を10で割り続け、0になるまでの回数を数えるというものです。10で1回割るごとに桁が1つ減っていくため、割った回数がそのまま桁数になります。 サンプルコード #include <iostream> using namespace std; int count_digit(int number) { int count = 0; while (number != 0)

  7. C++プログラムから外部アプリケーション(メモ帳など)を起動する方法

    この記事では、C++プログラムを使ってメモ帳(Notepad)などのサードパーティ製アプリケーションを起動する方法を解説します。実装は非常にシンプルで、コマンドプロンプトで使うコマンドをそのままC++から呼び出すだけで実現できます。ポイントとなるのは、標準ライブラリの system() 関数です。この関数の引数にアプリケーション名(コマンド)を文字列として渡すと、OSがそのコマンドを実行し、対応するアプリケーションが起動します。サンプルコード#include <iostream> using namespace std; int main() { cout <<

  8. 【C++】catchブロックと型変換の挙動を徹底解説

    はじめに この記事では、C++の例外処理におけるcatchブロックの使い方と、catchブロックにおける型変換の挙動について解説します。まずはサンプルコードを見ながら、どのような出力が得られ、それがなぜ起こるのかを確認していきましょう。 例1:文字型をthrowした場合の挙動 #include <iostream> using namespace std; int main() { try{ throw a; } catch(int a) { cout << Integer value is caught :

  9. C++のrint()・rintf()・rintl()関数で浮動小数点数を丸める方法

    本記事では、C++で浮動小数点数を丸めるために使用される3つの関数、rint()、rintf()、rintl()について解説します。これらの関数は、現在設定されている丸めモードに従って、浮動小数点値を最も近い整数値へ丸めた結果を返します。rint()関数とはrint()関数は、浮動小数点値を整数値に丸めるための関数です。構文は以下のとおりです。計算結果が戻り値の型の表現範囲外となる場合には、定義域エラー(domain error)が発生する可能性があります。また、引数が0または無限大の場合は、その値がそのまま返されます。float rint(float argument)double rint

  10. C++で作るマトリックス風・文字が降り注ぐエフェクトの実装方法

    映画『マトリックス』などでおなじみの、緑色の文字が画面を流れ落ちるあの演出。実はC++の標準ライブラリだけでも、コンソール上に簡単に再現できます。この記事では、乱数・スレッド・スリープ処理を組み合わせて、マトリックス風の「文字が降り注ぐエフェクト」を実装する方法を解説します。 実装のポイント この演出を実現するには、次の3つの要素を押さえておく必要があります。 マトリックスの幅を定義する … 1行に表示する最大桁数(画面幅)を決めます。 文字の間隔をランダムにする … 隣り合う文字どうしの隙間は一定である必要はありません。ランダム性を持たせることで、自然でノイズ感のある演出になります。 表

  11. C++のregex_error(正規表現エラー)とは?主なエラーコードと対処法を解説

    C++の正規表現ライブラリ(<regex>)には、正規表現を操作・検証するためのさまざまなメソッドや機能が用意されています。本記事では、その中でも重要なstd::regex_error(正規表現エラー)について詳しく解説します。regex_errorは正規表現ライブラリに属する例外クラスで、無効な正規表現を処理しようとした際に発生するエラーを表します。 std::regex_errorとは std::regex_errorは、std::basic_regexのコンストラクタなどに無効な正規表現パターンが渡されたときにスローされる例外クラスです。what()メンバ関数でエラー内容の詳

  12. C++におけるバッファフラッシュとは?仕組みと使い方を実例で解説

    バッファフラッシュとは何か バッファフラッシュ(buffer flush)とは、コンピュータの一時的な記憶領域であるバッファに溜め込まれたデータを、永続的なメモリや実際の出力先へ強制的に転送する操作のことです。 たとえばファイルを編集する場面を考えてみましょう。画面上で確認できる変更内容は、実はすぐに本体へ書き込まれているわけではなく、まず一時的にバッファへ保存されています。このバッファの内容を確定させて反映させるのが「フラッシュ」です。 C++でのバッファフラッシュの方法 C++では、バッファの内容を明示的にフラッシュして強制的に出力させることができます。主な方法は次の2つです。 std

  13. C++のNaN(非数)とは?意味と発生例をわかりやすく解説

    NaNは「Not a Number(非数)」の略称で、定義されていない、あるいは浮動小数点数として表現できない値を示す特殊な値です。C++では、数学的に結果が存在しない演算を行った場合などにNaNが返されます。 NaNが発生する典型例 NaNが発生する代表的なケースとして、次のようなものがあります。 負の数の平方根を求める(例:sqrt(-5)) 0を0で割る演算(0/0) 無限大同士の減算(∞ − ∞)などの未定義の演算 これらの演算は数学的に結果が一意に定まらないため、通常の数値ではなくNaNとして表現されます。 コード例 以下は、負の数の平方根を求めた結果、NaNが出力されるサンプル

  14. C++のtransform()関数とは?単項演算・二項演算モードの使い方を解説

    transform()関数は、C++のSTL(標準テンプレートライブラリ)に含まれる便利なアルゴリズムの一つです。使用する際は、<algorithm>ヘッダーファイルをインクルードする必要があります。この関数を使うと、配列やコンテナ内のすべての要素に対して、まとめて同じ操作を適用できます。例えば、「配列の各要素を2乗して、結果を別の配列に格納したい」といった場合にtransform()関数が役立ちます。 transform()関数には、主に次の2つの動作モードがあります。 単項演算(Unary operation)モード 二項演算(Binary operation)モード 単

  15. C++のオブジェクトスライスとは?発生原因と回避方法をわかりやすく解説

    オブジェクトスライス(Object Slicing)とはC++における「オブジェクトスライス」とは、派生クラスのオブジェクトを基底クラスのインスタンスに代入したときに、派生クラス固有のメンバ変数やメソッドが失われてしまう現象を指します。失われた情報が「切り取られた(sliced away)」ように見えることから、この名前で呼ばれています。これは値渡しや値での代入を行った際に、オブジェクト全体ではなく基底クラスの部分だけがコピーされるために起こります。ポインタや参照を使った場合はこの問題は発生しません。コード例で見るオブジェクトスライスまず、次のような2つのクラスを考えてみましょう。class

  16. Boostライブラリを活用した高度なC++プログラミング

    C++のBoostライブラリは、非常に幅広い用途に活用できる強力なライブラリ群です。多倍長整数の計算から高精度な浮動小数点演算まで、標準ライブラリだけでは難しい処理を簡潔に実装できます。たとえば、Boostを使えばC++でも264を超えるような巨大な数値を問題なく扱えるようになります。本記事では、Boostライブラリの代表的な機能を、実際のサンプルコードとともに紹介します。巨大な整数を扱う固定幅のデータ型Boost.Multiprecisionでは、int128_t、int256_t、int1024_tといった多倍長整数型が用意されており、これらを使えば最大1024ビット精度の整数演算を簡単に

  17. C++でオブジェクトのコピーを防止する方法

    C++では、クラスを定義すると、コピーコンストラクタやコピー代入演算子が暗黙的に生成されるため、オブジェクトを自由にコピーできてしまいます。しかし、リソースを独占的に管理するクラスやシングルトンパターンの実装など、設計上オブジェクトのコピーを禁止したいケースは少なくありません。本記事では、C++でオブジェクトのコピーを防止するための代表的な手法を、コード例とともに解説します。方法1:コピーコンストラクタと代入演算子をprivateにする最も古典的な方法は、コピーコンストラクタとコピー代入演算子をprivateメンバとして宣言することです。これにより、クラス外部からこれらの関数を呼び出せなくなり

  18. C++のstrtol()関数とは?文字列をlong整数に変換する使い方を解説

    C++のstrtol()関数は、文字列をlong型の整数に変換するための関数です。この関数は、変換された最後の有効な文字の次の文字をポインタに設定する機能も持っています。strtol()関数はcstdlibライブラリに含まれており、以下のような構文で定義されています。 long int strtol(const char* str, char ** end, int base) strtol()関数の引数 strtol()関数は3つの引数を受け取ります。それぞれの役割は以下の通りです。 str: 変換対象となる文字列の先頭へのポインタです。 str_end: 関数によって自動的に設定され

  19. C++のremainder()関数の使い方と動作を解説

    C++のremainder()関数とはこの記事では、C++のremainder()メソッドの機能について詳しく解説します。remainder()関数は、分子を分母で割った浮動小数点の剰余(余り)を計算するために使用されます。remainder(x, y)は、以下のような式で表されます。remainder(x, y) = x − rquote * yここで、rquoteはx/yの値であり、最も近い整数値に丸められた値です。つまり、通常の剰余演算とは異なり、結果が−y/2〜+y/2の範囲に収まるように計算されるのが特徴です。この関数は、double型、float型、long double型の2つの

  20. C++のsqrt・sqrtf・sqrtl関数の使い方と違いを徹底解説

    C++のcmathライブラリには、平方根を求めるための関数が複数用意されています。sqrt()だけでなく、データ型に応じて使い分けられるsqrtf()やsqrtl()などがあり、それぞれ対応する引数の型と戻り値の型が異なります。本記事では、これら3つの平方根関数の特徴と具体的な使い方を、サンプルコード付きで詳しく解説します。sqrt()関数:double型用の平方根計算sqrt()関数は、double型のデータに対して使用する基本的な平方根関数です。引数としてdouble型の値を受け取り、その平方根をdouble型で返します。構文double sqrt(double argument)使用例#

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:54/300  20-コンピューター/Page Goto:1 48 49 50 51 52 53 54 55 56 57 58 59 60