-
C ++の浮動小数点の精度はどれくらいですか?
C ++では、浮動小数点数のサイズは4バイトまたは8バイトのいずれかです。したがって、小数点以下数桁まで格納できます。たとえば、1/3=0.333333……無限大まで。浮動型変数内に格納すると、有効数字が格納されます。デフォルト値は6です。したがって、通常、C++の浮動小数点数は小数点以下6桁まで表示できます。 setprecisionを使用して精度のサイズを変更できます。これは、iomanipヘッダーファイル内にあります。アイデアを得るための1つの例を見てみましょう。 サンプルコード #include <iostream> #include <iomanip> us
-
共有メモリを介したIPC
共有メモリは、2つ以上のプロセス間で共有されるメモリです。しかし、なぜメモリやその他の通信手段を共有する必要があるのでしょうか? 繰り返しになりますが、各プロセスには独自のアドレススペースがあり、プロセスが独自のアドレススペースから他のプロセスに情報を通信する場合は、IPC(プロセス間通信)技術でのみ可能です。すでに認識しているように、コミュニケーションは関連するプロセス間または関連しないプロセス間で行うことができます。 通常、相互に関連するプロセス通信は、パイプまたは名前付きパイプを使用して実行されます。無関係なプロセス(たとえば、ある端末で実行されているプロセスと別の端末で実行されてい
-
メッセージキューを使用したIPC
共有メモリがすでにあるのに、なぜメッセージキューが必要なのですか?それは複数の理由によるでしょう、単純化するためにこれを複数のポイントに分割してみましょう- 理解されているように、メッセージがプロセスによって受信されると、他のプロセスでは使用できなくなります。一方、共有メモリでは、データは複数のプロセスがアクセスできるようになっています。 小さなメッセージ形式で通信したい場合。 複数のプロセスが同時に通信する場合は、共有メモリデータを同期で保護する必要があります。 共有メモリを使用した書き込みと読み取りの頻度が高い場合、機能の実装は非常に複雑になります。この種の場合の利
-
std ::mapで範囲ベースのfor()ループを使用する方法は?
ここでは、範囲ベースのforループfor std::mapタイプのオブジェクトを使用する方法を説明します。 C ++では、マップタイプのオブジェクトがあることがわかっています。キーと値のペアを格納できます。マップは基本的にペアオブジェクトを格納します。このペアオブジェクトは、1つのキーと対応する値を格納するために使用されます。これらのキーと値はテンプレートを使用して実装されているため、あらゆるタイプのデータを使用できます。 範囲ベースのforループを使用するために、マップの各ペアを反復処理できるforループを定義できます。より良いアイデアを得るためにコードを見てみましょう。 サンプルコード
-
C ++のプロキシクラスとは何ですか?
ここでは、C++のプロキシクラスとは何かを確認します。 Proxyクラスは、基本的にProxyデザインパターンです。このパターンでは、オブジェクトは別のクラスに変更されたインターフェイスを提供します。一例を見てみましょう。 この例では、バイナリ値[0、1]のみを格納できる配列クラスを作成します。これは最初の試みです。 サンプルコード class BinArray { int arr[10]; int & operator[](int i) { //Put some code here &nb
-
C ++ 11を使用してタイマーを作成するにはどうすればよいですか?
ここでは、C++を使用してタイマーを作成する方法を説明します。ここでは、後で呼び出される1つのクラスを作成しています。このクラスには次のプロパティがあります。 int(コードを実行するまで待機するミリ秒) bool(これがtrueの場合、すぐに戻り、指定された時間後に別のスレッドでコードを実行します) 可変引数(正確にはstd ::bindにフィードしたい) 精度を変更するために、chrono::millisecondsをナノ秒またはマイクロ秒などに変更できます。 サンプルコード #include <functional> #include <chrono>
-
変数の動的初期化とはどういう意味ですか?
オブジェクトの動的初期化とは、実行時にオブジェクトを初期化することを指します。つまり、オブジェクトの初期値は実行時に提供されます。動的初期化は、コンストラクターを使用し、パラメーター値をコンストラクターに渡すことで実現できます。このタイプの初期化は、実行時にクラス変数を初期化するために必要です。 なぜ動的初期化が必要なのですか? オブジェクトの動的初期化が必要です メモリを効率的に利用します。 オーバーロードされたコンストラクターを使用して、さまざまな初期化形式を提供できます。 状況を考慮して、実行時にさまざまな形式のデータを使用できる柔軟性があります。 サンプルコー
-
C++でのI/Oリダイレクト
Cでは、リダイレクトの目的でfreopen()関数を使用できます。この関数を使用して、既存のFILEポインターを別のストリームにリダイレクトできます。 freopenの構文は次のようになります: FILE *freopen(const char* filename, const char* mode, FILE *stream) C ++でも、リダイレクトを行うことができます。 C ++では、ストリームが使用されます。ここでは、独自のストリームを使用したり、システムストリームをリダイレクトしたりできます。 C ++には、3つのタイプのストリームがあります。 istream :ストリー
-
C++でのイテレータの無効化
C ++には、vector、list、set、mapなどのさまざまなコンテナーがあります。これらのコンテナーを反復処理するには、反復子を使用できます。 C ++でイテレータを使用する場合は注意が必要です。コンテナでイテレータを使用する場合、無効になることがあります。形や大きさを変えると、こういう問題に直面することがあります。次の例では、無効化の問題を特定できます。 サンプルコード #include <iostream> #include <vector> using namespace std; int main() { vector <
-
C++での複合デザインパターン
複合パターンは、オブジェクトのグループを単一のオブジェクトと同じように扱う必要がある場合に使用されます。複合パターンは、階層全体だけでなく一部を表すために、ツリー構造の観点からオブジェクトを構成します。このタイプのデザインパターンは、オブジェクトのグループのツリー構造を作成するため、構造パターンに分類されます。 このパターンは、独自のオブジェクトのグループを含むクラスを作成します。このクラスは、同じオブジェクトのグループを変更する方法を提供します。 組織の従業員階層を示す次の例を使用して、複合パターンの使用を示しています。 ここでは、コンポジットとリーフの両方のクラスがコンポーネン
-
C++での出力イテレータ
ここでは、C++の出力イテレータとは何かを確認します。出力イテレータにはいくつかのプロパティがあります。これらは以下のようなものです: 出力イテレータは、コンテナの値を変更するために使用されます。 この種のイテレータを使用してコンテナからデータを読み取ることはできません これは一方向で書き込み専用のイテレータです インクリメントすることはできますが、デクリメントすることはできません。 出力イテレータには2つのサブパートがあります。これらは、InsertIteratorとostreamiteratorです。 インサートイテレータ 挿入イテレータは、コンテナ内に要素を挿入するために使用されま
-
C++の双方向イテレータ
ここでは、C++での双方向イテレータの概念を説明します。 双方向イテレータは、フォワードイテレータのすべての機能をサポートし、プレフィックスおよびポストフィックスデクリメント演算子もサポートします。 このタイプのイテレータは、最後と最初のように、双方向で要素にアクセスできます。 ランダムアクセスイテレータも一種の双方向イテレータです。 双方向イテレータには順方向イテレータの機能がありますが、唯一の違いは、このイテレータをデクリメントできることです。 双方向イテレータにはいくつかのプロパティがあります。これらは以下のようなものです。 プロパティ 表現 双方向イテレータは、デフ
-
DAGのランダム線形拡大を作成するC++プログラム
ここでは、有向非巡回グラフ(DAG)のランダム線形拡大を作成する方法を説明します。線形拡大は、基本的にDAGのトポロジカルソートです。グラフを以下のように考えてみましょう- 有向非巡回グラフのトポロジカルソートは、頂点の線形順序付けです。有向グラフのすべてのエッジu-vについて、頂点uは順序付けで頂点vの前に来ます。 ソース頂点はデスティネーション頂点の後に来ることがわかっているので、スタックを使用して前の要素を格納する必要があります。すべてのノードが完成したら、スタックからそれらを表示するだけです。 入力 0 0 0 0 0 0 0 0
-
Johnsonのアルゴリズムを実装するC++プログラム
ここでは、2つの頂点間の最短経路を見つけるためのジョンソンのアルゴリズムを見ていきます。 グラフはここにあります。エッジ間の最短経路は以下のようになります。このプログラムは、頂点の数、エッジの数、およびエッジとそのコストを取得します。 入力 −頂点:3 エッジ:5 コストのかかるエッジ- 1 2 8 2 1 12 1 3 22 3 1 6 2 3 4 出力 −グラフの距離行列。 0 8 12 10 0 4 6 14 0 アルゴリズム johnsonAlgorithm(コスト) 入力 −与
-
C ++コンソールアプリケーションがすぐに終了しないようにするにはどうすればよいですか?
結果を表示した直後にコンソールが閉じていることに気付くことがあります。そのため、結果を正しく表示できません。ここでは、コンソールが閉じないようにする方法を説明します。 アイデアはとてもシンプルです。最後にgetchar()関数を使用できます。これは1文字待機します。 1文字押すと、コンソールが終了します。 例 #include <iostream> using namespace std; int main() { cout << "Hello World" << endl; getc
-
スーパークラスコンストラクターC++を呼び出すためのルールは何ですか?
C ++では、いくつかのクラスを派生させることができます。派生クラスのコンストラクターを呼び出すときに、スーパークラス(基本クラス)コンストラクターを呼び出す必要がある場合があります。 Javaとは異なり、スーパークラスの参照変数はありません。コンストラクターがパラメーター化されていない場合は、派生クラスで自動的に呼び出されます。そうでない場合は、派生クラスの初期化子リストにスーパークラスコンストラクターを配置する必要があります。 この例では、最初は引数のないコンストラクターが表示されます。 例 #include <iostream> using namespace std; c
-
C ++のiostreamとiostream.hの違いは何ですか?
ここでは、C++でのiostreamとiostream.hの違いを確認します。 iostream.hは、1990年代初頭のI/Oストリームライブラリで使用されていたヘッダーファイルでした。これは、初期のC ++で使用するためにAT&Tで開発されました。当時、C++は標準化されていませんでした。 C++標準ライブラリで使用されるiostreamヘッダーファイル。これは、標準のI/Oストリームへのアクセスを提供するために1998年に最初に公開されました。 「iostream.h」について言及しているC++標準はありませんでしたが、注釈付きC++リファレンスマニュアルなどの先行標準リファレンスは
-
C++とJavaでの例外処理の比較
例外処理機能は、現在ほとんどすべてのオブジェクト指向言語に存在します。 C ++とJavaでも、この種の機能を利用できます。 C ++での例外処理とJavaでの例外処理にはいくつかの類似点があります。どちらの言語でも、try-catchブロックを使用する必要があります。いくつかの困難もありますが。これらは以下のようなものです- C ++では、例外として任意のタイプのデータをスローできます。どのタイプのデータも、プリミティブデータ型とポインターを意味します。 Javaでは、スロー可能なオブジェクトのみをスローできます。スロー可能なクラスのサブクラスもスロー可能になります。 例 #include
-
C++およびJavaでのForeach
C ++とJavaには、foreachループと呼ばれる別のタイプのループがあります。これはCには存在しません。このループはC++11およびJavaJDK1.5.0で導入されました。このループの利点は、初期化、テスト、およびインクリメント/デクリメントを実行せずに、要素に非常に迅速にアクセスできることです。このループは、1つの配列または一部のコンテナー内のすべての要素にアクセスするために使用されます。このループはforeachと呼ばれますが、このループを示すには、「for」キーワードを使用する必要があります。構文は、通常のforおよびforeachとは異なります。 for(datatype it
-
スコープ解決演算子とC++のこのポインターの違い
ここでは、いくつかのC ++の例を見て、どのタイプの出力が生成されるかを取得しようとします。次に、スコープ解決演算子とC++の「this」ポインターの目的と機能を理解できます。 一部のコードに「x」と言うメンバーがあり、同じ名前「x」の引数を取る別の関数を使用する場合、その関数で「x」を使用すると、メンバー変数が非表示になり、ローカル変数が使用されます。これを1つのコードで確認しましょう。 例 #include <iostream> using namespace std; class MyClass { private: &