C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++のSTLでpair(ペア)を実装するプログラム

    pair(ペア)は、2つのデータオブジェクトで構成されるシンプルなコンテナです。C++では <utility> ヘッダに定義されており、異なる型同士の値をひとつの単位としてまとめて扱うことができます。 first = 1つ目の要素。「first」として参照される second = 2つ目の要素。要素の順序は固定(first → second) pairは代入・比較・コピーが可能です。型の異なる2つの値を組み合わせて保持したい場合に便利で、関数から2つの戻り値を返したいときや、キーと値のペアを扱う場面などでよく利用されます。 構文: pair<データ型1, データ型2>

  2. STLのprev_permutationをC++で実装する方法

    STL(標準テンプレートライブラリ)の prev_permutation は、範囲 [first, last] 内の要素を、辞書順でひとつ前の順列に並べ替えるための関数です。順列とは、N個の要素が取りうる N! 通りの並び方のうちの1つを指します。この記事では、STLの prev_permutation を使ったC++プログラムの実装方法を解説します。アルゴリズム処理の流れは以下のとおりです。Begin 整数型の配列変数 elements[] を定義する。 ユーザーからデータの個数 e を入力してもらう。 キーボードから入力された e 個のデータで配列 elements

  3. 【C++】STLのpriority_queue(優先度付きキュー)の使い方と実装例

    プライオリティキュー(priority_queue)とはプライオリティキュー(優先度付きキュー)は、C++標準テンプレートライブラリ(STL)が提供するコンテナアダプタの一種です。通常のキューが先入れ先出し(FIFO)方式であるのに対し、プライオリティキューでは常に最も大きな値を持つ要素が先頭に配置されます。優先度の高い要素が低い要素よりも先に取り出される仕組みで、内部的にはヒープ構造によって管理されています。デフォルトでは最大値が先頭に来る「最大ヒープ」として動作しますが、比較関数を指定することで最小ヒープとして利用することも可能です。タスクのスケジューリングやダイクストラ法など、優先順位付

  4. C++のSTLでキューを実装するプログラムの書き方と解説

    キュー(Queue)とはキューは、先入れ先出し(FIFO: First In First Out)の順序で要素に対する操作が行われる線形データ構造です。最初に挿入された要素が最初に取り出されるという特性を持ち、タスク管理やバッファ処理など、さまざまな場面で活用されています。C++の標準テンプレートライブラリ(STL)には、キューを手軽に扱える std::queue コンテナアダプタが用意されています。これを利用すれば、データ構造を自前で実装することなく、効率的にキュー操作を行うことができます。使用する主な関数ここで使用する関数: q.size() = キューのサイズ(要素数)を返しま

  5. C++でSTLのset(セット)を実装・操作するサンプルプログラム

    セット(set)は抽象データ型の一つで、各要素の値がその要素を識別するキーとなるため、すべての要素が一意(ユニーク)である必要があります。要素の値は、一度セットに追加すると変更できませんが、該当する要素を削除してから、変更後の値を新たに追加し直すことは可能です。また、C++のstd::setは内部に平衡二分木(赤黒木)を使用しているため、要素は常に自動的にソートされた状態で保持され、挿入・削除・検索を対数時間 O(log n) で効率的に行えます。使用する主なメンバ関数st.size() : セットに格納されている要素数を返す st.insert() : セットに新しい要素を挿入する st

  6. 【C++】STLのset_differenceを使って2つの集合の差分を求める方法

    2つの集合の「差(差集合)」とは、1つ目の集合には存在するが、2つ目の集合には存在しない要素だけから構成される集合のことです。set_difference関数によってコピーされる要素は、必ず1つ目の集合から取り出され、元の順序が保たれます。また、この関数を正しく動作させるためには、両方の集合があらかじめソート(整列)されている必要があります。代表的な集合演算には以下のようなものがあります。和集合(Union)積集合(Intersection)対称差(Symmetric Difference / 排他的論理和)差集合(Difference / 減算)アルゴリズムBegin 集合用のvec

  7. C++のSTLでset_intersectionを実装し、2つの集合の積集合を求める方法

    2つの集合の積集合(インターセクション)とは、両方の集合に共通して含まれる要素だけを集めたものです。set_intersection関数によってコピーされる要素は、必ず最初の集合から取り出され、元の順序がそのまま維持されます。また、この関数を正しく動作させるためには、処理前に両方の集合がそれぞれソート済みである必要があります。 集合に対する代表的な操作には、以下のようなものがあります。 和集合(ユニオン) 積集合(インターセクション) 対称差(排他的論理和・XOR) 差集合(減算) アルゴリズム Begin   結果を格納するvector型変数vとイテレータstを宣言する。   st =

  8. 【C++】STLのset_symmetric_differenceで集合の対称差を実装するプログラム

    本記事では、C++の標準テンプレートライブラリ(STL)に含まれる set_symmetric_difference 関数を使って、2つの集合の「対称差」を求めるプログラムを紹介します。 対称差とは、2つの集合のうち「どちらか一方にだけ存在し、両方には存在しない」要素から構成される集合のことです。 主な集合演算の種類 和集合(Union):どちらか一方に含まれるすべての要素 積集合(Intersection):両方に共通して含まれる要素 対称差(Symmetric Difference / 排他的論理和 XOR):片方にのみ含まれる要素 差集合(Difference / 減算):一方から他方

  9. C++のSTLでset_unionを使って2つの集合の和集合を求める方法

    2つの集合の和集合(union)とは、どちらか一方の集合、あるいは両方の集合に存在する要素によって構成される集合のことです。第1の集合に同じ値がすでに存在する場合、第2の集合側のその要素は結果の集合にはコピーされません。 主な集合演算 集合に対する基本的な演算には、以下の4種類があります。 和集合(Union) 積集合(Intersection) 対称差(Symmetric Difference / 排他的論理和) 差集合(Difference) set_unionを使う際のポイント STLのstd::set_unionを使用する前に、必ず両方の入力範囲をソートしておく必要があります。

  10. STLのlistコンテナでソートを実装するC++プログラム

    この記事では、C++のSTL(標準テンプレートライブラリ)に含まれるlistコンテナを使用して、要素の追加・並べ替え・表示を行うメニュー式プログラムを実装します。 使用する主な関数 使用する関数: l.push_back() = リストの末尾に要素を追加します。 l.sort() = リストの要素を昇順に並べ替えます。 ※ l は list オブジェクトです。 push_back()は引数で渡した値をリストの終端に追加する関数です。また、sort()はstd::listのメンバ関数として用意されており、呼び出すだけで内部のすべての要素を昇順にソートできます。s

  11. C++のSTLでスタックを実装するサンプルプログラム【初心者向け解説】

    スタック(Stack)は、操作を行う順序があらかじめ決まっている線形データ構造です。この順序は「LIFO(Last In First Out:後入れ先出し)」または「FILO(First In Last Out:先入れ後出し)」と呼ばれ、最後に追加した要素が最初に取り出されるという特徴を持ちます。本記事では、C++の標準テンプレートライブラリ(STL)に含まれる stack を使って、スタックの基本操作を実装するサンプルプログラムを紹介します。 アルゴリズム このプログラムでは、STLのstackオブジェクトを宣言し、ユーザーが選択した番号に応じてswitch文で各操作を呼び出します。使用す

  12. STLを使ったC++のvector(ベクトル)実装プログラム

    std::vectorは、動的配列のように要素の挿入や削除に応じて自動的にサイズを変更できるコンテナで、メモリ(記憶域)の管理はコンテナ自身が行います。要素は連続したメモリ領域に配置されるため、イテレータを使ったアクセスや走査が可能です。また、先頭・中間・末尾のいずれの位置にもデータを挿入・削除できます。 使用する主な関数とその説明 v.size() : ベクトルのサイズ(現在の要素数)を返します。 v.push_back() : ベクトルの末尾に要素を挿入します。 v.pop_back() : ベクトルの末尾から要素を取り除きます。 v.capacity() : 現在ベクトルに

  13. C++ STLのmap・multimapを降順で扱う方法

    一般に、C++のmapおよびmultimapは、デフォルトではキーを昇順で格納します。しかし、第3テンプレート引数として比較用の関数オブジェクトstd::greaterを指定することで、要素を降順で格納することも簡単にできます。 mapを降順で使用する 使用する主なメンバ関数 m.find() – 指定したキーを持つ要素へのイテレータを返します。見つからない場合はend()イテレータを返します。 m.erase() – マップから指定したキーの要素を削除します。 m.equal_range() – イテレータのペア(pair)を返します。このペアは、指定したキーと等しいキーを持つすべての要素

  14. C++ STLにおけるemplace()とinsert()の違いと使い方

    C++ STLにおけるemplace操作は、オブジェクトの不要なコピーを回避し、insert操作よりも効率的に要素を挿入できる点が大きな特徴です。insert操作は既存オブジェクトへの参照を受け取るため、コンテナに挿入する際にコピー(またはムーブ)が発生します。一方、emplaceは渡された引数をコンテナ内で直接オブジェクトとして構築するため、余分なコストを抑えられます。emplaceとinsertの違いemplace(): 引数をコンテナに転送し、コンテナ内で直接オブジェクトを構築します(in-place構築)。一時オブジェクトの生成やコピーが不要なため効率的です。insert(): 既存の

  15. 特定の値を持つ要素をC++ STLベクトルから削除する方法

    C++のSTL(Standard Template Library)におけるstd::vectorから、特定の値を持つ要素を削除するには、erase()関数を使用します。本記事では、基本的な使い方から、特定の値をすべて削除する「erase–removeイディオム」まで、実例とともに解説します。 erase()関数の基本 erase()関数は、引数として渡されたイテレータが指す位置の要素を削除します。また、範囲を指定することで複数の要素を一度に削除することも可能です。 単一要素の削除: v.erase(it) — イテレータitが指す要素を削除します。 範囲指定の削除: v.erase(fir

  16. C++のSTL set(セット)における要素の挿入と削除の基本

    C++のSTL(標準テンプレートライブラリ)に含まれる set コンテナは、重複しない要素を自動的にソートして管理する便利なデータ構造です。本記事では、setへの挿入と削除の方法を、実際に動作するサンプルコードと出力例とともに詳しく解説します。 要素の挿入:insert() STLのsetに要素を挿入するには、insert() 関数を使用します。insert() はオブジェクトへの参照を受け取り、その要素を適切な位置(自動的にソートされた状態を保つ位置)に追加します。 すでに同じ値がセット内に存在する場合、重複した挿入は行われず、セットの内容は変化しません。これがsetコンテナの大きな特徴です

  17. C++ STLのiswalnum()関数とは?ワイド文字が英数字か判定する方法

    C++ STLのiswalnum()関数は、指定されたワイド文字(wchar_t)が英数字であるかどうかを判定するための関数です。ここでいう英数字とは、数字(0〜9)、大文字アルファベット(A〜Z)、小文字アルファベット(a〜z)などを指します。この関数はヘッダーファイル <cwctype> で定義されており、引数に渡した文字が英数字であればゼロ以外の値を返し、そうでなければ0(ゼロ)を返します。アルゴリズムBegin 文字を初期化する。 関数 iswalnum(c1) を呼び出して、英数字かどうかを判定する。 英数字であればゼロ以外の値が返され、 そうでな

  18. C++ STLのiswalpha()関数とは?ワイド文字の判定方法を徹底解説

    C++ STLに含まれるiswalpha()関数は、指定されたワイド文字(wchar_t)がアルファベットであるかどうかを判定するために使用される関数です。文字がアルファベットであれば0以外の値(真)を返し、それ以外の場合は0(偽)を返します。この関数を使用するには、ヘッダーファイル <cwctype> をインクルードする必要があります。ワイド文字列を扱うため、<cwchar> も併せてインクルードするのが一般的です。アルゴリズムBegin 文字列を初期化する。 iswalpha(str)関数を呼び出し、文字列にアルファベットが含まれているかどうかを確認する

  19. C++ STLのlldiv()関数の使い方を徹底解説

    C++ STLのlldiv()関数は、2つの整数(long long型)の除算を行い、その結果である「商(quot)」と「余り(rem)」を同時に取得できる便利な関数です。通常、商と余りを別々に求める場合は演算を2回行う必要がありますが、lldiv()を使えば1回の呼び出しで両方の値を効率的に得ることができます。 基本構文と戻り値 lldiv()はヘッダーファイル <cstdlib> で定義されており、以下のような形式で使用します。 lldiv_t lldiv(long long numer, long long denom); 引数には被除数(割られる数)と除数(割る数)を指定し

  20. 【C++ STL】multisetのinsert()関数の使い方とサンプルコードを解説

    C++ STLのmultiset(マルチセット)コンテナにおけるinsert()関数は、新しい要素をコンテナへ挿入するためのメンバ関数です。単に値を指定して挿入する形式と、挿入位置のヒントとなるイテレータを指定する形式があり、状況に応じて使い分けられます。multisetは重複した値を許可し、挿入された要素は常に自動的にソートされた状態で保持されるという特徴を持っています。 使用する主なメンバ関数 ms.size() … マルチセットに現在格納されている要素数を返します。 ms.insert(値) … 指定した値をマルチセットに挿入し、挿入された要素を指すイテレータを返します。 ms.ins

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:35/300  20-コンピューター/Page Goto:1 29 30 31 32 33 34 35 36 37 38 39 40 41