C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++のstringクラスとは?基本的な使い方と主要な関数を解説

    C++には、従来のC言語の文字列とは異なるstringクラスが用意されています。C言語の文字列は実体としてはchar型の配列ですが、C++のstringクラスはさまざまなメンバ関数を持ち、文字列操作を安全かつ簡単に行えるのが特徴です。この記事では、stringクラスの重要な機能をサンプルコードとともに紹介します。 1. stringクラスのコンストラクタ まずは、stringクラスのコンストラクタがどのように動作するかを見ていきましょう。文字列リテラルからの初期化だけでなく、別のstringオブジェクトや文字の繰り返し、イテレータを使った初期化など、複数の方法が用意されています。 サンプルコー

  2. 【C++】複素数の絶対値を求めるabs()関数の使い方を解説

    C++のabs()関数は、複素数の絶対値(絶対値)を求めるために使用される関数です。複素数の絶対値は「モジュラス」とも呼ばれ、複素平面上において、その複素数が示す点が原点からどれだけ離れているかを表す距離に相当します。複素数の絶対値の計算式複素数 a + bi の絶対値は、以下の公式によって求められます。|a + bi| = √(a2 + b2)つまり、実部と虚部をそれぞれ2乗して足し合わせ、その平方根を取ることで絶対値が得られます。C++では、この一連の計算をabs()関数が自動的に行い、その結果を返してくれます。なお、複素数用のabs()関数は <complex> ヘッダ内で定

  3. C++で文字列の長さを求める5つの方法【サンプルコード付き】

    文字列とその長さとは文字の並び、あるいは文字型の線形配列のことを「文字列」と呼びます。宣言方法は他の配列を定義する場合と同じです。文字列の長さとは、その文字列に含まれる文字数のことです。文字列の長さを求めるには、標準ライブラリが提供する組み込みメソッドを利用する方法と、ループ処理で自前でカウントする方法があります。ここでは、C++で文字列の長さを求める5つの異なる方法を、サンプルコード付きでわかりやすく解説します。1. strlen() 関数を使う方法(C言語スタイル)strlen() はC言語の標準ライブラリ関数で、引数として渡された文字列の長さを整数値で返します。この関数を使用する場合は、

  4. C++プログラムで数値の偶数の約数の合計を求める方法

    このプログラムは、与えられた整数のすべての偶数の約数を見つけ、それらの合計を計算して画面に出力するものです。 実行例 入力 : 30 偶数の約数 : 2+6+10+30 = 48 出力 : 48 この問題を解くアプローチは、大きく分けて2つあります。 方法1:すべての約数を列挙して偶数のみを合計する まず対象の数値の約数をすべて求め、その中から偶数のものだけを取り出して合計します。この方法はシンプルで理解しやすい一方、約数を1つずつ確認するため、数値が大きくなると計算量が増えるという欠点があります。 方法2:素因数分解の公式を利用する より効率的なのが、素因数分解を利用した数学的な公式を使う方

  5. C++プログラムでポインタを使用して文字列内の母音をカウントする方法

    ポインタを使って文字列内の母音の数を求めるには、文字列・母音・そしてポインタと文字列を組み合わせて使う方法について理解しておく必要があります。文字列とは文字の配列です。母音とは集合 {a, e, i, o, u} に含まれる文字のことです。ポインタとは、変数が格納されているメモリ上の場所(アドレス)を保持する変数のことです。基本的な考え方文字列内の母音の数を求める手順は以下の通りです。文字列を先頭から順に走査(トラバース)します。各文字を母音(a, e, i, o, u)と比較します。一致した場合はカウンタを1増やし、一致しなければそのまま次へ進みます。なお、後述のコードではすべて小文字の文字

  6. 【C++】Xで割り切れる最小のK桁の数を求めるプログラム

    Xで割り切れる最小のK桁の数とは「Xで割り切れる最小のK桁の数」を求める問題は、数式を活用したシンプルな方法で効率よく解くことができます。この手法は以下の手順で動作します。解法のアルゴリズムK桁の最小値(MIN)を計算する:例えば、K=2なら10、K=3なら100、K=4なら1000のように、10K-1で求められます。MINがXで割り切れるか確認する:割り切れる場合は、MINがそのまま答えになります。割り切れない場合:「(MIN + X) − ((MIN + X) % X)」という式で答えを導きます。なぜこの式が機能するのかMINがXで割り切れない場合、MIN以上でXの倍数となる最小の数を探す

  7. C++のstringクラスとは?文字列操作の基本と実践的な応用例を解説

    文字列(String)とは、複数の文字が順番に並んだシーケンスのことです。C++プログラミング言語において、文字列は主に以下の2つの方法で定義することができます。Cスタイル文字列:文字列を文字型の配列(char配列)として扱います。C++のstringクラス:標準ライブラリが提供する文字列クラスを使用します。C++におけるstringクラスの特徴C++のstringクラスは、<string>ヘッダ(またはbits/stdc++.h)をインクルードすることで利用できます。内部的には文字配列としてメモリ上に格納されますが、ユーザーから見ると一つの文字列オブジェクトとして扱えるのが大きな

  8. C++のmutableキーワードとは?constオブジェクトでも値を変更できる仕組みを解説

    mutableキーワードとはC++におけるmutable(ミュータブル)キーワードを付けたデータメンバーは、オブジェクトがconst型で宣言されていても、実行時に値を変更することができます。これは、変更を一切許さない「定数(const)」とは正反対の性質を持つ指定子です。実際のプログラミングでは、「ほとんどのデータメンバーは定数として保護したいが、1つか2つのメンバーだけは変数として更新したい」というケースがよくあります。例えば、キャッシュ値やアクセス回数のカウンタなどが該当します。このような場面でmutableは、クラスの設計とデータ管理を柔軟に行うための非常に有用な概念となります。コード例

  9. C++の内部動作を徹底解説!コンパイラがソースコードを実行ファイルに変換する仕組み

    C++の内部動作(C++ Internals)とは?C++の内部動作とは、C++コンパイラがどのように.cppソースコードをコンパイルし、実行結果を出力するのか、その仕組みを指します。C++は主にシステムソフトウェアの開発に使われる人気の高いプログラミング言語で、C言語の拡張版として誕生しました。C++はコンパイル型言語です。C++コンパイラはソースコードをオブジェクトファイルや実行可能ファイルに変換し、その中にはCPUが直接実行できる機械語命令と、それに付随するメタデータが含まれています。コンパイルの基本的な流れC++プログラムをコンパイルする一般的な方法は、C++コードに対してコンパイラを

  10. C++ STLのbitset::flip()関数の使い方を徹底解説

    bitset::flip()は、C++の標準テンプレートライブラリ(STL)に最初から組み込まれているbitsetクラスのメンバ関数です。この関数は、呼び出し元のbitsetオブジェクトが保持しているビットを反転させる働きを持ちます。 bitset::flip()の基本的な動作 引数を何も指定せずに呼び出した場合は、bitset内のすべての「0」を「1」に、すべての「1」を「0」に変換します。つまり、呼び出し元のbitsetに含まれる全ビットを一括して反転する機能です。 一方、整数nを引数として渡した場合は、n番目のビットのみを反転します。なお、ビットの位置は最下位ビット(LSB)側の右

  11. C++ STLのbitset::all()関数とは?使い方とサンプルコードをわかりやすく解説

    bitset::all() は、C++ の標準テンプレートライブラリ(STL)に組み込まれている関数の一つです。この関数はブール値(bool)を返し、呼び出したビットセットのすべてのビットが 1 であれば true を、1 つでも 0 のビットがあれば false を返します。引数(パラメータ)は一切受け取らず、単純にブール値のみを返すシンプルな関数です。すべてのビットが立っているかどうかを一発で判定できるため、フラグ管理や状態チェックなどの場面で便利です。構文bool bitset_name.all();戻り値true:ビットセット内の全ビットが 1 の場合false:0 のビットが 1 つ

  12. C++で文字列を指定回数だけ繰り返し連結する方法

    文字列を指定された回数だけ連結するプログラムは、変数 n の値に基づいて、文字列の連結処理を n 回実行します。 その結果として、元の文字列が指定した回数分繰り返された文字列が得られます。 例 入力文字列: I love Tutorials point n = 5 出力 I love Tutorials pointI love Tutorials pointI love Tutorials pointI love Tutorials point I love Tutorials point 出力結果を見れば、この関数が何を行っているのかは一目瞭然です。入力された文字列が、指定した回数だけ繰り

  13. C++で実装するダイクストラ法:最短経路アルゴリズムの解説とサンプルコード

    ダイクストラ法とはダイクストラ法(Dijkstras algorithm)は、グラフ上のノード間の最短経路を求めるための代表的なアルゴリズムです。グラフは、例えば道路網などを表現するのに用いられます。このアルゴリズムは、始点(ソース)となる頂点から、グラフ内の他のすべての頂点への最短経路木を構築します。ダイクストラ法は、始点となる単一のノードから出発し、「始点からの距離が最小となるノードの集合」を段階的に拡張していくことで、最短経路木を求めます。グラフの構成要素このアルゴリズムで扱うグラフは、以下の要素で構成されます。頂点(ノード):アルゴリズム内では v や u といった記号で表されます。重

  14. C++で「-」演算子のオーバーロードを使って2つの数値を加算する方法

    演算子オーバーロードは、C++における重要な概念の一つです。これはポリモーフィズム(多態性)の一種であり、演算子にユーザー定義の意味を持たせるためにオーバーロードする仕組みです。オーバーロードされた演算子は、ユーザー定義のデータ型に対して操作を実行するために使用されます。例えば、「+」演算子をオーバーロードすることで、整数型や文字列型(連結処理)など、さまざまなデータ型に対して加算を行うことができます。入力と出力入力10 20 20 30出力30 50処理の解説このプログラムでは、「-」演算子をオーバーロードして、2つの数値の加算を実現します。二項演算子は操作を実行するために1つのオブジェクト

  15. 毎回Bで割り切れるようにAにN桁を追加するアルゴリズム

    問題概要 整数 a、b、n が与えられます。a の末尾に1桁ずつ数字を追加していき、毎回の追加後にその数が b で割り切れるようにすることが求められます。 数字を1桁追加した直後、a が b で割り切れるようにします。 この操作を n 回繰り返したとき、あり得る最小の a の値を出力します。 条件を満たすことができない場合は fail を出力します。 なお、1桁追加するごとに必ず割り切れているかどうかを確認する必要があります。 入出力例 入力: a=5 b=4 n=4 出力: 52000 解説 まず、追加する最初の1桁として 0〜9 の数字を順番に試します。どの数字を追加しても a が b

  16. C++のstd::vectorと配列の違いとは?それぞれのメリット・デメリットを徹底解説

    C++のstd::vectorはテンプレートクラスとして実装されたC++独自の構造である一方、配列はC言語とC++の両方に存在する言語組み込みの機能です。vectorはリストインターフェースを持つ動的配列として実装されており、内部で自動的にメモリ管理を行います。一方、配列はプリミティブなデータ型インターフェースを持ち、静的にも動的にも確保できますが、メモリ管理はプログラマ自身の責任となります。vectorと配列の主な違いvectorはサイズを後から拡張できる動的配列ですが、通常の配列は宣言時に決まったサイズを変更できません。vectorではreserve()関数を使って事前にメモリ領域を予約で

  17. C++で実装する鳩の巣ソート(Pigeonhole Sort)の仕組みとサンプルプログラム

    鳩の巣ソート(Pigeonhole Sort)とは鳩の巣ソートは、要素同士の比較を一切行わない「非比較ソート」手法の一つです。ソート対象の要素数(n)と、キーとなりうる値の範囲(N)がほぼ同じである場合に特に適しており、計算量は O(n + N) で動作します。別名「カウントソート(Count Sort)」とも呼ばれています。このソートを実行するには、まず「穴(ピジョンホール)」を用意します。必要な穴の数は、数値の範囲によって決定されます。各要素を対応する穴に挿入していき、最後に穴から取り出して配列へ格納することで、ソート済みの並び順が完成します。Input: arr[]={7,4,2,6,3

  18. C++で学ぶクイックソート(QuickSort)の仕組みと実装方法

    クイックソートとはクイックソート(Quicksort)は、比較に基づいて未ソートのリスト(配列)を並べ替えるソートアルゴリズムの一つです。「パーティション交換ソート(partition exchange sort)」とも呼ばれます。クイックソートは安定ソートではありません。これは、等しい値を持つ要素同士の相対的な順序が保持されないためです。ただし、配列に対してごくわずかな追加メモリだけで動作するため、メモリ効率に優れています。選択ソートと非常に似ていますが、常に最悪のパーティションを選んでしまうわけではない点が異なり、より洗練された形の選択ソートと捉えることもできます。クイックソートは最も効率

  19. 2つの整数の間のアームストロング数の求め方|C言語サンプルコード付きで解説

    アームストロング数とは?アームストロング数(Armstrong Number)とは、n桁の整数の各桁を取り出してそれぞれn乗し、それらを合計した値が元の数と一致するような整数のことです。数式で表すと次のようになります。abcd... = an + bn + cn + dn + ...特に3桁のアームストロング数の場合は、「各桁の数字の3乗の和がその数自身と等しい」という条件になります。最も有名な例が 153 です。153 = 13 + 53 + 33 = 1 + 125 + 27 = 153つまり、153 はアームストロング数です。ほかにも、370、371、407 などが3桁のアームストロング

  20. 【C++】双方向イテレータ(Bidirectional Iterator)の基本と使い方を徹底解説

    C++の双方向イテレータとは?双方向イテレータ(Bidirectional Iterator)とは、範囲内の要素シーケンスに対して「末尾方向」と「先頭方向」の両側からアクセスできる特権を持つイテレータのことです。リスト(list)、マップ(map)、セット(set)といったコンテナに対して動作します。双方向イテレータは前方イテレータ(Forward Iterator)と同じ性質をすべて備えていますが、唯一異なる点としてデクリメント(--)操作が可能であるという特徴があります。双方向イテレータの主なプロパティ性質有効な式デフォルト構築、コピーコンストラクト、コピー代入、および破棄が可能X a;X

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:67/300  20-コンピューター/Page Goto:1 61 62 63 64 65 66 67 68 69 70 71 72 73