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

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

20
クラス定義の* .hまたは* .hpp
私は常に*.hクラス定義にファイルを使用してきましたが、いくつかのboostライブラリコードを読んだ後、すべてがを使用していることに気付きました*.hpp。私はいつもそのファイル拡張子に嫌悪感を抱いてきました、私はそれに慣れていないことが主な理由だと思います。 *.hppover を使用する利点と欠点は何*.hですか?
554 c++  header 


6
イテレーターの無効化ルール
C ++コンテナーのイテレーター無効化ルールとは何ですか? できれば要約リスト形式で。 (注:これはStack OverflowのC ++ FAQへのエントリになることを目的としています。このフォームでFAQを提供するという考えを批評したい場合は、これをすべて開始したメタへの投稿がそのための場所になります。回答その質問はC ++チャットルームで監視され、FAQのアイデアはそもそも最初から始まっているため、アイデアを思いついた人があなたの答えを読む可能性は非常に高いです。
543 c++  c++11  iterator  c++17  c++-faq 


13
なぜC ++コンパイルはそんなに時間がかかるのですか?
C ++およびJavaと比較すると、C ++ファイルのコンパイルには非常に長い時間がかかります。C ++ファイルのコンパイルには、通常サイズのPythonスクリプトを実行するよりも大幅に時間がかかります。現在VC ++を使用していますが、どのコンパイラでも同じです。どうしてこれなの? ヘッダーファイルを読み込んでプリプロセッサを実行することが2つの理由として考えられますが、それがなぜそれほど時間がかかるのかを説明できるとは思えません。



18
'mutable'キーワードには、変数をconst関数で変更できるようにする以外の目的がありますか?
しばらく前に、クラスのメンバー変数をmutableキーワードでマークするコードを見つけました。私が見る限り、constメソッド内の変数を変更できます。 class Foo { private: mutable bool done_; public: void doSomething() const { ...; done_ = true; } }; これがこのキーワードの唯一の使用ですか、それとも見た目以上のものですか?それ以来、クラスでこの手法を使用して、スレッドセーフな理由で関数をロックboost::mutexできるミュータブルとしてマークしましたconstが、正直なところ、少しハックのように感じます。
527 c++  keyword  mutable 


13
C ++テンプレート関数定義を.CPPファイルに保存する
ヘッダーのインラインではなく、CPPファイルに保存したいテンプレートコードがあります。使用されるテンプレートの種類がわかっている限り、これを実行できます。例えば: .hファイル class foo { public: template <typename T> void do(const T& t); }; .cppファイル template <typename T> void foo::do(const T& t) { // Do something with t } template void foo::do<int>(const int&); template void foo::do<std::string>(const std::string&); 最後の2行に注意してください。foo:: doテンプレート関数は、intとstd :: stringsでのみ使用されるため、これらの定義はアプリがリンクすることを意味します。 私の質問は-これは厄介なハックですか、それとも他のコンパイラ/リンカーで動作しますか?現在、このコードはVS2008でのみ使用していますが、他の環境に移植したいと考えています。
526 c++  templates 

30
浮動小数点と二重比較の最も効果的な方法は何ですか?
2つdoubleまたは2つのfloat値を比較する最も効率的な方法は何でしょうか? これを行うだけでは正しくありません。 bool CompareDoubles1 (double A, double B) { return A == B; } しかし、次のようなもの: bool CompareDoubles2 (double A, double B) { diff = A - B; return (diff < EPSILON) && (-diff < EPSILON); } 処理を無駄にしているようです。 誰かがよりスマートなフロート比較器を知っていますか?

16
PythonからC / C ++を呼び出す?
CまたはC ++ライブラリへのPythonバインディングを構築する最も速い方法は何でしょうか? (これが問題になる場合は、Windowsを使用しています。)
521 c++  python  c 

17
C ++でプライベート静的メンバーを初期化する方法は?
C ++でプライベートな静的データメンバーを初期化する最良の方法は何ですか?ヘッダーファイルでこれを試しましたが、奇妙なリンカーエラーが発生します。 class foo { private: static int i; }; int foo::i = 0; これは、クラスの外部からプライベートメンバーを初期化できないためだと思います。これを行うための最良の方法は何ですか?

9
Visual Studioでのコマンドラインパラメーターを使用したデバッグ
Visual StudioでC ++コマンドラインアプリケーションを開発していますが、コマンドライン引数を使用してデバッグする必要があります。現時点では、生成されたEXEファイルを必要な引数(program.exe -file.txtこのように)で実行していますが、この方法ではデバッグできません。デバッグ用の引数を指定できる場所はありますか?

8
noexceptを実際に使用する必要があるのはいつですか?
noexceptキーワードが適切に多くの関数のシグネチャに適用することができますが、私は実際にそれを使用することを検討すべきときになどわからないと思います。これまでに読んだ内容に基づくと、のぎりぎりの追加はnoexcept、ムーブコンストラクターがスローするときに発生するいくつかの重要な問題に対処しているようです。ただし、noexceptそもそも詳細について読むためのいくつかの実際的な質問に対しては、まだ満足のいく答えを提供することはできません。 私がスローしないとわかっている関数の例はたくさんありますが、コンパイラーがそれ自体で決定することはできません。このような場合noexceptはすべて関数宣言に追加する必要がありますか? すべての関数宣言のnoexcept後に追加する必要があるかどうかを考える必要があると、プログラマーの生産性が大幅に低下します(率直に言って、お尻の痛みになります)。どのような状況での使用についてより注意する必要がありますか。また、どのような状況で暗黙の状況を回避できますか?noexceptnoexcept(false) 使用後にパフォーマンスの改善が見られるのはいつ現実的に期待できnoexceptますか?特に、C ++コンパイラーがを追加した後でより優れたマシンコードを生成できるコードの例を示しますnoexcept。 個人的には、noexcept特定の種類の最適化を安全に適用するためにコンパイラーに提供される自由の増加のために気にしています。最近のコンパイラnoexceptはこのように利用していますか?そうでない場合、近いうちにそうすることを期待できますか?

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