-
C++で文字列の配列を作成する方法【サンプルコード付き】
はじめにC++では、stringキーワード(std::string)を使用することで、文字列の配列を簡単に作成できます。本記事では、この手法を用いたC++プログラムの具体的な例を、アルゴリズム・サンプルコード・実行結果とともにわかりやすく解説します。アルゴリズム処理の流れは以下の通りです。開始 stringキーワードを使用して配列の各要素を文字列で初期化する 配列の内容を出力する 終了サンプルコード#include<iostream> #include<bits/stdc++.h> using namespace std; int main() { &nbs
-
C++でポインタ演算を使って配列要素の合計を求める方法
この記事では、C++においてポインタ演算を利用して配列要素の合計を求めるプログラムを紹介します。C++では配列名は先頭要素へのポインタとして扱えるため、*(ptr + i) のように記述することで、添字演算子を使わずに各要素へアクセスできます。 アルゴリズム 開始 ユーザーからの入力値で配列要素を初期化する 合計を格納する変数 s を 0 で初期化する i = 0 から 6 まで繰り返す s = s + *(ptr + i) 変数 s に格納された合計値を出力する 終了 サンプルコード #include<iostream> using
-
C++でSTLを使って配列の積を求める方法
C++では、STL(標準テンプレートライブラリ)のaccumulate関数を利用することで、配列内のすべての要素の積を簡潔に求めることができます。ここでは、その具体的な実装例を紹介します。 アルゴリズム 開始 配列の各要素の値を初期化する。 ユーザー定義関数 accumulate を呼び出し、配列全体の積を取得する。 計算結果を出力する。 終了 サンプルコード #include <iostream> #include <numeric> using namespace std; int ProductOfArray(int p[], int n)
-
C++で多次元配列の次元を取得して表示する方法
C++では、テンプレート関数を活用することで、多次元配列の各次元のサイズを動的に取得して出力できます。ここでは、指定された配列の次元を表示するC++プログラムを紹介します。アルゴリズムtemplate()関数を使用して、配列の現在のサイズを取得します。その後、配列の最後の次元に到達するまで、その関数を再帰的に呼び出していきます。サンプルコード#include <iostream> using namespace std; template <typename t, size_t n> void printDimensionsOfArray(const t (&a
-
C++における配列インデックス演算子[]のオーバーロード方法を徹底解説
C++における演算子のオーバーロードは、オブジェクト指向プログラミングの重要な機能の一つです。演算子オーバーロードは、コンパイル時ポリモーフィズム(静的ポリモーフィズム)に分類されます。本記事では、その代表例として、配列インデックス演算子 [] のオーバーロードを実装し、独自クラスでも配列のように要素へアクセスできるようにする方法を解説します。配列インデックス演算子[]をオーバーロードするメリット通常、クラス内部で管理している配列に対して [] 演算子を使うと、範囲外アクセスが発生してもコンパイラは検出してくれません。operator[] をオーバーロードすれば、以下のようなメリットがあります
-
C++で文字列(std::string)をchar配列に変換する3つの方法
C++では、std::string型の文字列をchar型の配列(C言語形式の文字列)に変換したい場面がよくあります。たとえば、C言語のライブラリ関数を呼び出すときや、低レベルな文字列操作を行うときなどです。この記事では、代表的な3つの変換方法をアルゴリズムとサンプルコード付きで解説します。 方法1:ループで1文字ずつコピーする アルゴリズム Begin 文字列 m に値を代入する i = 0 から sizeof(m) まで繰り返す char配列へ1文字ずつコピーして出力する End サンプルコード #include<iostream> #inclu
-
C++のクラス内で動的な2次元配列を作成する方法
本記事では、C++のクラス内に動的な配列を実装し、その要素を表示するシンプルなプログラムを紹介します。クラス内部に配列を持たせることで、サイズ管理や範囲外アクセスのチェックをカプセル化でき、より安全な配列操作が可能になります。ここで紹介する手法は、動的な2次元配列の実装にも応用できる基本的なテクニックです。 アルゴリズム 開始 クラス「Arr」を作成し、配列のサイズを宣言する。 クラス内でforループを使用して、すべての要素を初期化する。 すべての要素を表示する。 終了。 サンプルコード #include <iostream> #include <stdlib.h
-
C++で配列を参照渡しする方法|ポインタを使った関数呼び出しの基本
C++において、関数を呼び出すときに配列のアドレス(番地)を渡す方式は「参照渡し(call by reference)」と呼ばれます。引数としてアドレスを渡す場合、それを受け取る側の関数は、渡されたアドレスを格納できるようにポインタ型の仮引数を宣言しておく必要があります。関数側では、間接参照演算子「*」を使うことで、ポインタが指し示す先の値にアクセスできます。これにより、関数の中から元の配列のデータを直接操作することが可能になります。サンプルコード#include <iostream> using namespace std; void show( int *num) {
-
C++のstd::sortを使った配列のソート方法をわかりやすく解説
プログラミングにおいて、ソート(並べ替え)はデータを昇順または降順に整理するための基本的な処理の一つです。C++では、標準ライブラリに用意されている std::sort() 関数を使うことで、配列を簡単にソートすることができます。 std::sort() の基本的な構文は以下のとおりです。 sort(開始アドレス, 終了アドレス) 引数の説明 開始アドレス => ソート対象となる最初の要素のアドレス 終了アドレス => 配列の最後の要素の「次」の連続した位置のアドレス つまり、sort(a, a+5) と記述した場合、配列 a の先頭から5番目の要素までがソート対象となります。なお
-
C++で動的配列を初期化する方法を解説!new演算子の使い方とサンプルコード
C++では、new演算子を使うことで、実行時にサイズを決定できる動的配列を作成できます。本記事では、動的配列の基本的な初期化方法と、関数から配列を返すテクニックについて、実際のコード例を交えてわかりやすく解説します。動的配列とは?通常の配列(静的配列)はコンパイル時にサイズが固定されますが、動的配列はプログラムの実行中にヒープ領域へメモリを確保するため、必要なサイズを実行時に柔軟に決められます。C++ではnew演算子でメモリを確保し、使い終わったらdelete[]で解放するのが基本の流れです。また、動的配列は関数内で確保したメモリがスコープを抜けても有効なため、ローカル配列を関数から返したい場
-
C++で配列を関数に渡す方法を徹底解説!3つの宣言方法と実例コード
C++では、配列全体をそのまま引数として関数に渡すことはできません。しかし、インデックスを付けずに配列名を指定することで、配列へのポインタを関数に渡すことが可能です。1次元配列を関数の引数として渡したい場合、仮引数(フォームパラメータ)は以下の3つのいずれかの方法で宣言します。どの方法でも、コンパイラに対して「整数型のポインタを受け取る」ことが伝えられるため、結果的にはすべて同じように動作します。方法1:ポインタとして仮引数を宣言する最も一般的な方法です。仮引数をポインタ型として定義します。void myFunction(int *param) { . . . }方法2
-
C++のnew演算子で整数の動的配列を作成・削除する方法
C++では、new演算子を使うことで実行時に動的配列(サイズを実行時に決められる配列)を作成できます。確保したメモリは、不要になった時点でdelete演算子を使って解放するのが基本です。ここでは、ユーザーから要素数と値を入力してもらい、動的配列に格納して表示する簡単なサンプルコードを紹介します。サンプルコード#include<iostream> using namespace std; int main() { int i, n; cout << 要素数を入力してください: << \n; cin >> n; /
-
C++ STLの二分探索関数の使い方|binary_search・lower_bound・upper_bound徹底解説
二分探索(バイナリサーチ)とは 二分探索(バイナリサーチ)は、ソート済みの配列から特定の値が存在する位置を効率的に見つけ出す検索アルゴリズムです。探索範囲の中央にある要素と目的の値を比較し、大小関係に応じて探索範囲を半分ずつ絞り込んでいくことで高速な検索を実現します。 先頭から順に調べる線形探索の計算量が O(n) であるのに対し、二分探索の計算量は O(log n) と非常に効率的です。データ件数が100万件あっても、比較回数はわずか20回程度で済みます。 C++のSTL(標準テンプレートライブラリ)には、この二分探索を簡単に利用できる関数が複数用意されています。本記事では、それぞれの使い方
-
C++のSTLを使ったDeque(両端キュー)の実装方法を解説
両端キュー(Double Ended Queue、略称:Deque)は、キューの一種であり、先頭(front)と末尾(rear)の両端で要素の挿入・削除が行えるデータ構造です。通常のキューは片側から挿入し反対側から削除するだけですが、dequeは双方向からの操作に対応しているため、より柔軟なデータ管理が可能になります。 C++では、標準テンプレートライブラリ(STL)に <deque> ヘッダとして両端キューが標準搭載されているため、自前で実装しなくても手軽に利用できます。本記事では、STLのdequeを使用したメニュー形式の対話型プログラムを通じて、基本的な使い方を解説します。
-
【C++】STLのforward_list(単方向リンクリスト)を実装して操作する方法
forward_listとは?listとの違いを解説 C++の標準テンプレートライブラリ(STL)に含まれる std::forward_list は、単方向リンクリスト(片方向連結リスト)を実装したシーケンスコンテナです。 同じくリンクリスト構造を持つ std::list は「次の要素」と「前の要素」の両方を追跡できる双方向リストであるのに対し、forward_list は「次の要素」へのポインタのみを保持します。この設計により、各要素あたりのメモリ消費量を抑えられます。 その一方で、forward_list には次のような制約がある点に注意が必要です。 ランダムアクセス不可: 個々の要素へ
-
C++でSTLのlist(リスト)を操作するプログラムの実装方法
std::listは、非連続(連続していない)メモリ領域への要素配置を許容するシーケンスコンテナです。vectorと比較すると要素の走査はやや遅いものの、目的の位置さえ特定できれば、そこへの挿入・削除が非常に高速に行える点が大きな特徴です。内部は双方向リンクリストとして実装されており、先頭・末尾への追加や削除も定数時間で処理できます。 使用する主なメンバ関数 本プログラムでは、main() 関数から以下のメンバ関数を呼び出しています。 l.resize() = リストのサイズを変更します。 l.push_front()&n
-
STLのマップ(map)を実装するC++プログラムの書き方
マップ(map)とはマップは、要素をキーと値のペアとして対応付けて格納する連想コンテナです。各要素はキー値とマップ値を持ち、同じキー値を持つ要素が複数存在することはありません。使用する主なメンバ関数m::find() – マップ内に指定したキー値(b)を持つ要素が見つかれば、その要素へのイテレータを返します。見つからない場合はend()へのイテレータを返します。m::erase() – マップから指定したキー値の要素を削除します。m::equal_range() – ペア(pair)のイテレータを返します。このペアは、指定したキーと等価なキーを持つコンテナ内のすべての要素を含む範囲の境界を表し
-
C++のSTLでマルチマップ(multimap)を実装するプログラムの解説
マルチマップ(multimap)は、C++の標準テンプレートライブラリ(STL)が提供する連想コンテナの一つで、複数の要素が同じキーを持てるという点を除けば、マップ(map)とよく似ています。マルチマップでは、キー値とマップ値のペアそのものが一意である必要があります。使用する主な関数mm::find() – マルチマップ内でキー値 b を持つ要素を検索します。見つかった場合はその要素へのイテレータを、見つからない場合は end() イテレータを返します。mm::erase() – 指定したキー値(またはイテレータが指す要素)をマルチマップから削除します。mm::equal_range() –
-
【C++】STLのマルチセット(multiset)を実装・操作するサンプルプログラム
マルチセット(multiset)とはマルチセットは、C++のSTL(標準テンプレートライブラリ)に用意されている連想コンテナの一種です。通常のstd::setと異なり、同じ値を持つ複数の要素を同時に格納できる点が最大の特徴です。また、要素は挿入時に自動的にソートされるため、常に整列された状態で管理されます。使用する主なメンバ関数関数説明ms.size()マルチセットに格納されている要素数を返します。ms.insert()マルチセットへ新しい要素を挿入します。ms.erase()指定した値をマルチセットから削除します。ms.find()検索対象の要素が見つかった場合はその要素を指すイテレータを返
-
STLのnext_permutationを使って順列を生成するC++プログラム
next_permutationとはSTL(標準テンプレートライブラリ)のnext_permutationは、範囲[first, last]内の要素を、辞書順で次に大きな順列へと並べ替えるための関数です。順列とは、N個の要素が取り得るN!通りの並べ方のうちの1つを指します。この記事では、STLのnext_permutationを利用して、すべての順列を生成・表示するC++プログラムを紹介します。アルゴリズムBegin 整数型の配列変数 elements[] を定義する。 データの個数 e をユーザーから入力してもらう。 キーボードから入力された e 個のデータで配列 e