タグ付けされた質問 「c++」

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。

20
C ++シングルトン設計パターン
最近、C ++のシングルトンデザインパターンの実現/実装にぶつかりました。次のようになっています(実際の例から採用しています)。 // a lot of methods are omitted here class Singleton { public: static Singleton* getInstance( ); ~Singleton( ); private: Singleton( ); static Singleton* instance; }; この宣言から、インスタンスフィールドがヒープで開始されていると推測できます。つまり、メモリ割り当てがあります。メモリが割り当て解除されるのはいつなのか、私にとって完全に不明確なことは何ですか?それともバグとメモリリークはありますか?実装に問題があるようです。 私の主な質問は、どのようにそれを正しい方法で実装するのですか?



24
C ++標準では、int、long型のサイズをどのように表現していますか?
基本的なC ++型のサイズに関する詳細情報を探しています。私はそれがアーキテクチャ(16ビット、32ビット、64ビット)とコンパイラに依存することを知っています。 しかし、C ++の標準はありますか? 32ビットアーキテクチャでVisual Studio 2008を使用しています。ここに私が得るものがあります: char : 1 byte short : 2 bytes int : 4 bytes long : 4 bytes float : 4 bytes double: 8 bytes 私は、多くの成功なし、の大きさを述べる信頼できる情報を見つけることを試みたchar、short、int、long、double、float(と私は考えていなかった他の種類の)異なるアーキテクチャとコンパイラの下で。
696 c++  c++-faq 

17
main()はCおよびC ++で何を返す必要がありますか?
main()CおよびC ++で関数を定義するための正しい(最も効率的な)方法は何ですか、int main()またはvoid main()その理由は何ですか?もしint main()その後、return 1またはreturn 0? この質問には、次のような重複が多数あります。 Cのmain()関数の有効な署名は何ですか? main()関数の戻り型 違いvoid main()とint main()? main()C ++でのの署名 の適切な宣言はmain()何ですか?— C ++の場合、確かに非常に良い答えがあります。 main()C の関数のスタイル main()C のメソッドの戻り型 int main()対void main()C 関連: C ++ — int main(int argc, char **argv) C ++ — int main(int argc, char *argv[]) であるchar *envp[]と3番目の引数としてmain()のポータブル? int main()関数はすべてのコンパイラで値を返す必要がありますか? main()CおよびC ++の関数の型がユーザーに定義する理由はなぜですか? なぜint main(){}コンパイルするのですか? …



19
CとC ++の両方で有効なコードは、各言語でコンパイルしたときに異なる動作を生成できますか?
CとC ++には多くの違いがあり、すべての有効なCコードが有効なC ++コードであるとは限りません。 (「有効」とは、動作が定義された標準コードを意味します。つまり、実装固有/未定義などではありません。) CとC ++の両方で有効なコードが、各言語の標準コンパイラーでコンパイルしたときに異なる動作を生成するシナリオはありますか? それを合理的/有用な比較にするために(私は質問で明らかな抜け穴を見つけようとするのではなく、実際に役立つ何かを学ぼうとしています)、仮定しましょう: プリプロセッサに関連するものはありません(つまり#ifdef __cplusplus、、プラグマなどのハックがないことを意味します) 実装で定義されたものは両方の言語で同じです(たとえば、数値制限など)。 各標準のかなり最近のバージョン(たとえば、C ++ 98およびC90以降)を比較しています。 バージョンが重要な場合は、それぞれのバージョンの動作が異なることを説明してください。
664 c++  c 



4
サイクルあたりの4つのFLOPの理論的な最大値を達成するにはどうすればよいですか?
最新のx86-64 Intel CPUで、サイクルあたり4つの浮動小数点演算(倍精度)の理論上のピークパフォーマンスをどのように達成できますか? 私が理解している限り、最新のIntel CPUのほとんどでSSE が完了addするmulまでに3サイクル、が完了するまでに5サイクルかかります(たとえば、Agner Fogの「Instruction Tables」を参照)。パイプライン化によりadd、アルゴリズムに少なくとも3つの独立した合計がある場合、1サイクルあたり1のスループットが得られます。これは、パックaddpdされたaddsdバージョンとスカラーバージョンおよびSSEレジスターに2を含めることができるため当てはまるためdouble、スループットはサイクルあたり2フロップと同じくらい高くなる可能性があります。 さらに、(これに関する適切なドキュメントを見たことはありませんが)addとmulは並行して実行でき、サイクルあたり4フロップの理論的な最大スループットを実現できます。 ただし、単純なC / C ++プログラムではそのパフォーマンスを再現できませんでした。私の最善の試みは約2.7フロップ/サイクルをもたらしました。ピークパフォーマンスを実証する単純なC / C ++またはアセンブラープログラムを提供できる人がいれば、高く評価されます。 私の試み: #include <stdio.h> #include <stdlib.h> #include <math.h> #include <sys/time.h> double stoptime(void) { struct timeval t; gettimeofday(&t,NULL); return (double) t.tv_sec + t.tv_usec/1000000.0; } double addmul(double add, double mul, int ops){ // Need to initialise differently …

16
ミリ秒間スリープ
私は、POSIX sleep(x)関数がプログラムをx秒間スリープさせることを知っています。C ++でプログラムをx ミリ秒間スリープさせる関数はありますか?
632 c++  linux  sleep 

30
符号なし整数乗算オーバーフローを検出するにはどうすればよいですか?
OverаэтотвопросестьответынаStack Overflowнарусском:МожнолинаязыкахC / C ++определитьцелочисленнееленееленее 私は、すべての解決策を見つけるためにC ++でプログラムを書いていたB = C、、BとCが一緒にすべての桁を使用し0-9回だけを。プログラムは、値の上にループとB、そして、それは上の桁カウントルーチンを毎回走っ、BとBの桁条件が満たされたかどうかを確認します。 しかし、スプリアス溶液を生成することができるbは整数制限をオーバーフロー。私は次のようなコードを使用してこれをチェックすることになりました: unsigned long b, c, c_test; ... c_test=c*b; // Possible overflow if (c_test/b != c) {/* There has been an overflow*/} else c=c_test; // No overflow オーバーフローをテストするより良い方法はありますか?一部のチップにはオーバーフローが発生したときに設定される内部フラグがあることは知っていますが、CまたはC ++を介してアクセスされることはありません。 符号付き intオーバーフローはCおよびC ++では未定義の動作であるため、実際にそれを引き起こさずに検出する必要があることに注意してください。追加前の署名付きintオーバーフローについては、C / C ++での署名付きオーバーフローの検出を参照してください。
618 c++  c  integer-overflow 


8
C ++でifstreamを使用して1行ずつファイルを読み取る
file.txtの内容は次のとおりです。 5 3 6 4 7 1 10 5 11 6 12 3 12 4 5 3座標ペアはどこですか。C ++でこのデータを1行ずつ処理するにはどうすればよいですか? 最初の行を取得できますが、ファイルの次の行を取得するにはどうすればよいですか? ifstream myfile; myfile.open ("text.txt");
612 c++  file-io  ofstream 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.