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

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


2
最新のC ++でパフォーマンスを無料で取得できますか?
C ++ 11/14は、単にC ++ 98コードをコンパイルする場合でも、パフォーマンスを向上させることができると主張されることがあります。正当化は通常、移動のセマンティクスの線に沿っています。場合によっては、右辺値コンストラクターが自動的に生成されるか、STLの一部となることがあります。今、これらのケースが以前にRVOまたは同様のコンパイラ最適化によって実際にすでに処理されていたかどうか疑問に思っています。 私の質問は、新しい言語機能をサポートするコンパイラを使用して、変更なしでより高速に実行されるC ++ 98コードの実際の例を教えてもらえるかどうかです。コピーの省略を行うのに標準準拠のコンパイラーは必要ないことを理解しています。そのため、移動のセマンティクスによって速度が向上する可能性があります。 編集:明確にするために、私は新しいコンパイラが古いコンパイラよりも高速であるかどうかを尋ねているのではなく、コンパイラフラグに-std = c ++ 14を追加するコードがある場合、それはより高速に実行されます(コピーを避けますが、移動セマンティクス以外に何かを思い付くことができます、私も興味があります)

15
C ++は例外時にスタックトレースを表示します
例外がスローされた場合にスタックトレースをユーザーに報告する方法が必要です。これを行う最良の方法は何ですか?大量の追加コードが必要ですか? 質問に答えるには: できれば持ち運びできるようにしたいです。情報をポップアップ表示したいので、エラーが発生した場合、ユーザーはスタックトレースをコピーしてメールで送信できます。


16
wstringを文字列に変換する方法は?
問題は、wstringをstringに変換する方法ですか? 次の例があります: #include <string> #include <iostream> int main() { std::wstring ws = L"Hello"; std::string s( ws.begin(), ws.end() ); //std::cout <<"std::string = "<<s<<std::endl; std::wcout<<"std::wstring = "<<ws<<std::endl; std::cout <<"std::string = "<<s<<std::endl; } コメントアウトされた行の出力は次のとおりです。 std::string = Hello std::wstring = Hello std::string = Hello しかしなしは: std::wstring = Hello 例に何か問題がありますか?上記のように変換できますか? 編集 新しい例(いくつかの回答を考慮に入れる)は #include <string> #include …
204 c++  unicode  stl  wstring 

13
C#とJavaのジェネリックスとC ++のテンプレートの違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 6年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私は主にJavaを使用しており、ジェネリックは比較的新しいものです。Javaが間違った決定をしたか、.NETの方が実装が優れているなど、私は読み続けています。 では、ジェネリックにおけるC ++、C#、Javaの主な違いは何ですか?それぞれの長所/短所?
203 c#  java  c++  generics  templates 

12
メモリの断片化とは何ですか?
「メモリの断片化」という用語は、C ++の動的メモリ割り当てのコンテキストで数回使用されたと聞いています。メモリの断片化を処理する方法についていくつかの質問を見つけましたが、それ自体を処理する直接的な質問は見つかりません。そう: メモリの断片化とは何ですか? アプリケーションのメモリの断片化が問題であるかどうかを確認するにはどうすればよいですか?どのようなプログラムが最も苦しみそうですか? メモリの断片化に対処するための良い一般的な方法は何ですか? また: 動的割り当てを使用すると、メモリの断片化が増える可能性があると聞きました。これは本当ですか?C ++のコンテキストでは、すべての標準コンテナー(std :: string、std :: vectorなど)が動的メモリ割り当てを使用することを理解しています。これらがプログラム全体で使用される場合(特にstd :: string)、メモリの断片化が問題になる可能性が高くなりますか? STLの多いアプリケーションでメモリの断片化をどのように処理できますか?

18
C ++で「スーパー」を使用する
私のコーディングスタイルには、次のイディオムが含まれています。 class Derived : public Base { public : typedef Base super; // note that it could be hidden in // protected/private section, instead // Etc. } ; これにより、例えばコンストラクターでBaseのエイリアスとして「super」を使用できるようになります。 Derived(int i, int j) : super(i), J(j) { } または、オーバーライドされたバージョン内の基本クラスからメソッドを呼び出す場合でも: void Derived::foo() { super::foo() ; // ... And then, do something …
203 c++  coding-style 

6
不完全な型のstd :: unique_ptrはコンパイルされません
私はpimpl-idiomをstd::unique_ptr次のように使用しています: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; ただし、次の行304で、不完全な型の使用に関するコンパイルエラーが発生します<memory>。 ' sizeof'の不完全な型 ' uixx::window::window_impl' への無効な適用 私の知る限りstd::unique_ptrでは、不完全な型で使用できるはずです。これはlibc ++のバグですか、ここで何か問題がありますか?

10
プロセスはいつSIGABRT(シグナル6)を取得しますか?
プロセスがC ++でSIGABRTを取得するシナリオは何ですか?このシグナルは常にプロセス内から発生しますか、またはこのシグナルをあるプロセスから別のプロセスに送信できますか? このシグナルを送信しているプロセスを特定する方法はありますか?
202 c++  sigabrt 





12
STLマップでは、[]よりもmap :: insertを使用する方が良いですか?
しばらく前に、STL マップに値を挿入する方法について同僚と話し合いました。map[key] = value; 自然な感じで読みやすいので好き だったが、彼は好きだった map.insert(std::make_pair(key, value)) 私は彼に尋ねたところ、どちらも挿入の方が良い理由を思い出せませんが、スタイルの好みだけではなく、効率などの技術的な理由があったのだと思います。SGIのSTLの参照は、単純に言う、「厳密に言えば、このメンバ関数は不要である:それは便宜上存在します。」 誰かがその理由を教えてもらえますか、それともそこにあることを夢見ていますか?
201 c++  stl  map  stdmap 

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