-
C++で文字列の一部を別の文字列に置き換えます
ここでは、C++で文字列の一部を別の文字列に置き換える方法を説明します。 C ++では、置換は非常に簡単です。 string.replace()という関数があります。この置換関数は、一致の最初の出現のみを置換します。すべてのためにそれを行うために、ループを使用しました。この置換関数は、置換する場所からインデックスを取得し、文字列の長さを取得し、一致した文字列の代わりに配置される文字列を取得します。 Input: A string "Hello...Here all Hello will be replaced", and another string to replace
-
サブストリングを別のサブストリングC++に置き換えます
ここでは、部分文字列を別の部分文字列に置き換える方法を説明します。文字列のposで始まり、len文字にまたがる部分を置き換えます。 置換関数の構造は次のとおりです。 string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen); パラメータはposです :挿入ポイントです、 str :文字列オブジェクトです。len:消去する文字数に関する
-
スタックを使用してバランスの取れた並列処理をチェックするC++プログラム
ここでは、スタックを使用してバランスブラケットをチェックする方法について説明します。開閉ブラケットだけでなく、ブラケットの順番もチェックしています。たとえば、「[{}(){()}]」という表現は正しいと言えますが、「{[}]」という表現は正しくありません。 Input: Some expression with brackets "{()}[]" Output: They are balanced アルゴリズム Step 1: Define a stack to hold brackets Step 2: Traverse the expression from left
-
スタックを使用して10進数を2進数に変換するC++プログラム
この問題では、スタックを使用して10進数を2進数に変換する方法を説明します。 10進数は、2で割って余りをとった後、2進数を使用して変換できることがわかっています。残りは最後から最初に取得するため、スタックデータ構造を使用して簡単に実行できます。 Input: Decimal number 13 Output: Binary number 1101 アルゴリズム Step 1: Take a number in decimal Step 2: while the number is greater than 0: Step 2.1: Push the remainder after divid
-
スタックを使用して式を評価するC++プログラム
数式を解くには、接頭辞または接尾辞の形式が必要です。中置を後置に変換した後、正しい答えを見つけるために後置評価アルゴリズムが必要です。 ここでも、スタックデータ構造を使用して接尾辞式を解決する必要があります。 後置式から、いくつかのオペランドが見つかった場合、それらをスタックにプッシュします。演算子が見つかると、スタックから2つの項目がポップされ、正しい順序で操作が実行されます。その後、結果は将来の使用のためにスタックにもプッシュされます。式全体が完成すると、最終結果もスタックトップに保存されます。 Input: Postfix expression: 53+62/*35*+ Output
-
スタックを実装するC++プログラム
このプログラムでは、C++を使用してスタックを実装する方法を説明します。スタックは、要素のコレクションを含む抽象的なデータ構造です。スタックはLIFOメカニズムを実装します。つまり、最後にプッシュされた要素が最初にポップアウトされます。スタック内の主要な操作のいくつかは-です。 プッシュ -これにより、スタックの最上位にデータ値が追加されます。 ポップ -これにより、スタックの最上位のデータ値が削除されます ピーク -これはスタックの最上位のデータ値を返します 配列を使用してスタックを実装するプログラムは次のとおりです。 Input: Push elements 11,
-
隣接リストを実装するC++プログラム
グラフの隣接リスト表現は、リンクリスト表現です。この表現では、リストの配列があります。配列のサイズはVです。ここで、Vは頂点の数です。つまり、V個の異なるリストを格納する配列があると言えます。リストヘッダーが頂点uの場合、uの隣接するすべての頂点を保持することを意味します。 隣接リスト表現の複雑さ この表現は、無向グラフの場合はO(V + 2E)を取り、有向グラフの場合はO(V + E)を取ります。エッジの数を増やすと、必要なスペースも増えます。 入力 : 出力 : アルゴリズム add_edge(adj_list、u、v) 入力 :エッジ{u、v}のuとv、およ
-
隣接行列を実装するためのC++プログラム
グラフの隣接行列は、サイズV x Vの正方行列です。VはグラフGの頂点の数です。この行列では、各辺にV個の頂点がマークされています。グラフにiからjの頂点までのエッジがある場合、i thの隣接行列に 行とjth 列は1(または加重グラフの場合はゼロ以外の値)になります。それ以外の場合、その場所は0を保持します。 隣接行列表現の複雑さ: 隣接行列表現は、計算中にO(V2)のスペースを取ります。グラフに最大数のエッジと最小数のエッジがある場合、どちらの場合も必要なスペースは同じになります。 入力: 出力: 0 1 2 3 4
-
凸包を見つけるためのグラハムスキャンアルゴリズムを実装するC++プログラム
凸包は、指定されたすべてのデータポイントをカバーできる最小の閉じた領域です。 グラハムのスキャンアルゴリズムは、凸包のコーナーポイントを見つけます。このアルゴリズムでは、最初に最低点が選択されます。その点が凸包の始点です。残りのn-1個の頂点は、始点から反時計回りの方向に基づいて並べ替えられます。 2つ以上の点が同じ角度を形成している場合は、開始点から最も遠い点を除いて、同じ角度のすべての点を削除します。 残りのポイントから、それらをスタックにプッシュします。そして、スタックのトップポイント、2番目のトップポイント、および新しく選択されたポイントポイント[i]の方向が反時計回りでない場合は
-
凸包を見つけるためにジャービスマーチを実装するC++プログラム
ジャービスマーチアルゴリズムは、特定のデータポイントのセットから凸包のコーナーポイントを検出するために使用されます。 データセットの左端のポイントから開始して、反時計回りの回転によって凸包内のポイントを保持します。現在のポイントから、現在のポイントからのそれらのポイントの方向を確認することにより、次のポイントを選択できます。角度が最大の場合、ポイントが選択されます。すべてのポイントを完了した後、次のポイントが開始ポイントになったら、アルゴリズムを停止します。 Input: Set of points: {(-7,8), (-4,6), (2,6), (6,4), (8,6), (7,-2),
-
与えられたシーケンスの最長増加部分列を見つけるためのC++プログラム
最長増加部分列は、1つの項目が前の項目よりも大きい部分列です。 ここでは、整数のセットから最長増加部分列の長さを見つけようとします。 Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing subsequence. Here it is 6. The subsequence is 0, 2, 6, 9, 13, 15. アルゴリズム longestSubSeq(subarray、n) 入力 :サブ配列と
-
C ++プログラムの関数にオブジェクトを渡す方法は?
オブジェクトを関数に渡すには4つの方法があります。クラスXがあり、それを関数funに渡したいとしましょう。 値渡し これにより、関数スコープにオブジェクトの浅いローカルコピーが作成されます。ここで変更したものは、渡されたオブジェクトには反映されません。たとえば、 宣言 void fun(X x); 電話 X x; fun(x); 参照渡し これにより、オブジェクトへの参照が関数に渡されます。ここで変更したものは、渡されたオブジェクトに反映されます。オブジェクトのコピーは作成されません。たとえば、 宣言 void fun(X &x); 電話 X x; fun(x); constリファ
-
C++でintargc、char * argv []はどういう意味ですか?
argcは引数の数を表し、argvは引数の値を表します。これらは、実行開始時にmain関数に渡される変数です。プログラムを実行すると、次のようにそのプログラムに引数を指定できます。 $ ./a.out hello ここで、helloは実行可能ファイルへの引数です。これはプログラムでアクセスできます。 サンプルコード #include<iostream> using namespace std; int main(int argc, char** argv) { cout << "This program has " <
-
C++プログラムでの通常のキャストとstatic_castとdynamic_cast
static_cast −これは通常/通常の型変換に使用されます。これは、暗黙の型強制の原因となるキャストでもあり、明示的に呼び出すこともできます。 floatをintに、charをintに変換する場合などに使用する必要があります。 dynamic_cast −このキャストは、ポリモーフィズムを処理するために使用されます。派生クラスにキャストする場合にのみ使用する必要があります。これは、基本クラスから派生クラスにキャストするときに継承でのみ使用されます。 レギュラーキャスト −これは、const_cast、static_cast、およびreinterpret_castを組み合わせてい
-
C ++プログラムの「struct」と「typedefstruct」の違いは?
基本的に、構造体は構造体を定義するために使用されます。ただし、これを使用する場合は、Cでstructキーワードを使用する必要があります。typedefキーワードを使用してから新しい名前を使用すると、structキーワードを記述せずに、その名前でstructを使用できます。 C ++では、「struct」と「typedef struct」の間に違いはありません。これは、C ++では、名前が別の宣言によって隠されていない限り、すべてのstruct / union / enum/class宣言が暗黙的にtypedefされたように動作するためです。同じ名前で。 typedefを前方宣言できないとい
-
C ++でのプライベート、パブリック、および保護された継承の違い
データの非表示は、オブジェクト指向プログラミングの重要な機能の1つであり、プログラムの機能がクラス型の内部表現に直接アクセスするのを防ぐことができます。クラスメンバーへのアクセス制限は、ラベル付けされたアクセス修飾子(クラス本体内のパブリック、プライベート、および保護されたセクション)によって指定されます。 メンバーとクラスのデフォルトのアクセスはプライベートです。 サンプルコード class Base { public: // public members go here protected: // protected members
-
C++のi++と++iの間にパフォーマンスの違いはありますか?
++のサフィックスバージョンとプレフィックスバージョンには大きな違いがあります。 プレフィックスバージョン(つまり、++ i)では、iの値がインクリメントされ、式の値はiの新しい値になります。したがって、基本的には、最初にインクリメントしてから、式に値を割り当てます。 Postfixバージョン(つまり、i ++)では、iの値はインクリメントされますが、式の値はiの元の値です。したがって、基本的には、最初に式に値を割り当ててから、変数をインクリメントします。 理解を深めるために、いくつかのコードを見てみましょう。 サンプルコード #include<iostream
-
2部グラフでグラフ彩色を実行するC++プログラム
2部グラフは、グラフの彩色が2つの色を使用して可能である場合にグラフです。セット内の頂点は同じ色で色付けされます。このプログラムでは、2部グラフを入力として受け取り、頂点に色を付けた後、各頂点の色を出力します。 アルゴリズム Begin BFS algorithm is used to traverse all the vertices. Take a vertex and colour it yellow. Colour all its neighbour vertices as blue. Colour the next level vertices as yell
-
入力グラフの線グラフにエッジカラーリングを実行するC++プログラム
無向グラフGの線グラフは、Gのエッジ間の隣接関係を表す別のグラフL(G)です。このプログラムでは、入力グラフの線グラフにエッジの彩色を実行します。 アルゴリズム Begin Take the input of the number of vertices ‘n’ and number of edges ‘e’. Take the input of ‘n’ vertex pairs for the ‘e’ edges in the graph in
-
グラフがDAGであるかどうかをチェックするC++プログラム
有向非巡回グラフ(DAG)は、他のエッジを接続するサイクルのない有向非巡回グラフです。このグラフの端は一方向に進みます。これは、グラフがDAGであるかどうかを確認するためのC++プログラムです。 アルゴリズム Begin Function checkDAG(int n): intialize count = 0 intialize size = n - 1 for i = 0 to n-1 if (count == size) &nb