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

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


3
バッファをフラッシュするとはどういう意味ですか?
私はC ++を学習していますが、理解できないことが見つかりました。 出力バッファを明示的にフラッシュして、バッファを強制的に書き込むことができます。デフォルトでは、cinフラッシュの読み取りcout。coutプログラムが正常に終了した場合にもフラッシュされます。 バッファをフラッシュします(たとえば、出力バッファ):これは、すべてを削除してバッファをクリアしますか、それともすべてを出力してバッファをクリアしますか?または、バッファのフラッシュは、まったく異なることを意味しますか?
95 c++  input  buffer  output  flush 

5
移動のみのタイプのベクターをリスト初期化できますか?
GCC 4.7スナップショットを介して次のコードを渡すと、unique_ptrsをベクターにコピーしようとします。 #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } std::unique_ptrはコピーできないため、明らかに機能しません。 エラー:削除された関数の使用 'std :: unique_ptr <_Tp、_Dp> :: unique_ptr(const std :: unique_ptr <_Tp、_Dp>&)[with _Tp = int; _Dp = std :: default_delete; std :: unique_ptr <_Tp、_Dp> = std :: unique_ptr] ' …

5
仮想継承はどのようにして「ダイヤモンド」(多重継承)のあいまいさを解決しますか?
class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = new D(); a->eat(); } ダイヤモンドの問題を理解しています。上記のコードにはその問題はありません。 …

1
エラー:パラメータ1に指定されたデフォルトの引数
以下のコードでこのエラーメッセージが表示されます。 class Money { public: Money(float amount, int moneyType); string asString(bool shortVersion=true); private: float amount; int moneyType; }; まず、C ++では最初のパラメーターとしてデフォルトのパラメーターは許可されていませんが、許可されていると思いました。

6
Cのチルダ演算子
ELFハッシュアルゴリズムでチルド演算子が使用されているのを見てきましたが、その機能に興味があります。(コードはEternally Confusedからのものです。) unsigned elf_hash ( void *key, int len ) { unsigned char *p = key; unsigned h = 0, g; int i; for ( i = 0; i < len; i++ ) { h = ( h << 4 ) + p[i]; g = h & 0xf0000000L; if ( …
95 c++  c  operators 

9
コンパイルエラー:「g ++: 'cc1plus'を実行しようとしてエラー:execvp:そのようなファイルまたはディレクトリはありません」
C / C ++プログラムをpopenin php...でコンパイルすると、次のエラーが発生しました。 g++: error trying to exec 'cc1plus': execvp: No such file or directory しかし、シェルでphpコードを実行すると、うまく動作します。 Arch Linux .. PHPコード: <?php function rfile($fp) { $out=""; while (!feof($fp)) { $out.= fgets($fp, 1024000); } return $out; } $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r'); $result = rfile($p); …
95 php  c++  c  linux  gcc 

3
「メモリストンプ」とは何ですか?
私は「記憶を踏み鳴らす」について言及しているこのブログ投稿に出くわしました: メモリを簡単に踏み付けることができるC ++プログラム(マネージコードの世界で生まれた場合、おそらく聞いたこともないもの) そして実際、私はそれについて聞いたことがありません! それで、これは何ですか、メモリを踏み鳴らして、メモリを踏みつけますか?いつ発生しますか?

27
プログラムはリリースビルドとしてのみクラッシュします—デバッグ方法は?
ここに「Schroedinger's Cat」タイプの問題があります-私のプログラム(実際には私のプログラムのテストスイートですが、それでもプログラム)がクラッシュしますが、組み込みのリリースモードで、コマンドラインから起動したときのみです。穴居人のデバッグ(つまり、いたるところに厄介なprintf()メッセージ)を通じて、コードがクラッシュしているテストメソッドを特定しましたが、残念ながら、実際のクラッシュはいくつかのデストラクタで発生しているようです。クリーンに実行される他のデストラクタ。 Visual Studio内でこのプログラムを実行しようとしても、クラッシュしません。WinDbg.exeから起動した場合も同様です。クラッシュは、コマンドラインから起動した場合にのみ発生します。これはWindows Vistaで起こっています。残念ながら、現在テストするためのXPマシンにアクセスできません。 私はWindowsのスタックトレース、またはプリントアウトしてもらうことができれば、それは本当にいいですね何かそれがきれいに出るたかのように、単にプログラムを終了以外を。ここでもっと意味のある情報を入手して、うまくいけばこのバグを修正する方法について誰かアドバイスはありますか? 編集:問題は確かに範囲外の配列が原因でした。これについては、この投稿で詳しく説明します。この問題の発見にご協力いただき、ありがとうございました!
95 c++  debugging 

1
C ++での「フリー関数」という用語の意味は何ですか?
boost :: testのドキュメントを読んでいるときに、「フリー関数」という用語に出くわしました。私が理解しているのは、フリー関数は何も返さない関数であるということです(その戻り型は無効です)。しかし、さらに読んだ後、無料の関数も引数を取らないようです。しかし、私にはわかりません。これらはすべて私の仮定です。だれでも自由関数を定義できますか?
95 c++ 

8
vector :: atとvector :: operator []
私はそれat()が[]その境界チェックのために遅いことを知っています、それは同様にC ++ Vector at / []オペレーター速度 または:: std :: vector :: at()対operator []のような同様の質問で議論されます<<驚くべき結果!! 5〜10倍遅い/速い!。私at()はその方法が何に適しているのか理解できません。 このような単純なベクトルがある場合:インデックスがあり、ベクトルが境界にあるかどうかわからない状況ではなく、std::vector<int> v(10);を使用してその要素にアクセスすることにした場合、try-catchで強制的にラップするブロック:at()[]i try { v.at(i) = 2; } catch (std::out_of_range& oor) { ... } 私はsize()自分でインデックスを使用して確認することで同じ動作を得ることができますが、これは私にとってより簡単で非常に便利です: if (i < v.size()) v[i] = 2; だから私の質問は:vector :: operator []よりvector :: at を使用する利点は何ですか? いつvector :: size + vector :: operator …
95 c++  stl  stdvector 

4
`size_t`にはどのヘッダーを含める必要がありますか?
cppreference.comに よるとsize_t、いくつかのヘッダーで定義されています。 <cstddef> <cstdio> <cstring> <ctime> そして、C ++ 11以降、 <cstdlib> <cwchar> まず第一に、これはなぜそうなのかと思います。これは、DRYの原則に反していませんか?しかし、私の質問は: 上記のヘッダーのどれを使用するために含める必要がありますsize_tか?それはまったく重要ですか?
95 c++  typedef 



4
std :: unique_ptrを宣言する方法とその用途は何ですか?
私はどのようにstd::unique_ptr機能するかを理解しようとし、そのためにこのドキュメントを見つけました。著者は次の例から始めます。 #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; unique_ptr<double> uptr2 (pd); // overloaded * and -> *uptr2 = 23.5; unique_ptr<std::string> ups (new std::string("hello")); int len=ups->size(); 私を混乱させているのは、この行にあることです unique_ptr<int> uptr …
95 c++  pointers  std  unique-ptr 

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