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

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

5
値の初期化での私の試みは関数宣言として解釈され、なぜa(())にならないのですか?解決しますか?
Stack Overflowが私に教えてくれた多くのことの1つは、「最も厄介な解析」として知られているものです。これは、次のような行で古典的に示されています。 A a(B()); //declares a function これは、ほとんどの場合a、型のオブジェクトの宣言のように見えますがA、一時Bオブジェクトをコンストラクターのパラメーターとして受け取りますが、実際には、をa返す関数の宣言であり、A戻り値をB持ち、それ自体はパラメーターをとらない関数へのポインターを受け取ります。同様にライン A a(); //declares a function オブジェクトの代わりに関数を宣言しているため、同じカテゴリにも該当します。さて、最初のケースではB()、コンパイラがオブジェクトの宣言として解釈するため、この問題の通常の回避策は、ブラケット/括弧のセットを追加することです。 A a((B())); //declares an object ただし、2番目のケースでは、同じことを行うとコンパイルエラーが発生します。 A a(()); //compile error 私の質問は、なぜですか?はい、私は正しい「回避策」がそれをに変更することであることを非常によく知っていますが、最初の例のコンパイラに対してA a;追加()が何をしてそれを再適用するときに機能しないのか知りたいです2番目の例。あるA a((B()));問題を回避するには、標準的に書き込まれた特定の例外?
158 c++ 

6
C ++での__FILE __、__ LINE__、および__FUNCTION__の使用法
彼らはあなたのC ++コンパイラのサポートしていることを仮定すると、特定の理由があるない使用する__FILE__、__LINE__および__FUNCTION__ロギングとデバッグ目的のためには? 私は主に、ユーザーに誤解を招くようなデータを与えること(例えば、最適化の結果として誤った行番号または機能を報告すること)、または結果としてパフォーマンスヒットをとることに関心があります。 基本的に、私は信頼できる__FILE__、__LINE__と__FUNCTION__するために、常に正しいことを行いますか?

4
C ++でvoid関数をどのように終了しますか?
関数がvoid関数の場合、値を返さずに関数を途中で終了するにはどうすればよいですか?特定の条件がtrueの場合にコードを実行する必要がないvoidメソッドがあります。実際に値を返すためにメソッドを変更する必要は本当にありません。
158 c++ 

9
値を返さずに非void関数の最後をオフにしても、コンパイラエラーが発生しないのはなぜですか?
私が何年も前に気付いて以来、これはデフォルトではエラーを生成しない(少なくともGCCでは)ことを知っているので、私はいつもその理由を疑問に思っていましたか? コンパイラフラグを発行して警告を生成できることを理解しましたが、常にエラーである必要はありませんか?非void関数が値を返さないのが有効であることはなぜ意味があるのですか? コメントでリクエストされた例: #include <stdio.h> int stringSize() { } int main() { char cstring[5]; printf( "the last char is: %c\n", cstring[stringSize()-1] ); return 0; } ...コンパイルします。
158 c++  c  gcc  g++ 

6
C ++での「typeid」と「typeof」
C ++ typeidとtypeofC ++の違いは何ですか。これが私が知っていることです: typeidドキュメントに記載されている TYPE_INFO C ++ヘッダファイルに定義されているのTypeInfo。 typeofCのGCC拡張およびC ++ Boostライブラリで定義されています。 また、ここに、私が作成したテストコードテストがあります。ここでは、typeid期待した結果を返さないことがわかりました。どうして? main.cpp #include <iostream> #include <typeinfo> //for 'typeid' to work class Person { public: // ... Person members ... virtual ~Person() {} }; class Employee : public Person { // ... Employee members ... }; int main () { …
158 c++  typeof  typeid 

14
特定のタイプのみを受け入れるC ++テンプレート
Javaでは、選択したクラスを拡張するタイプのみを受け入れるジェネリッククラスを定義できます。例: public class ObservableList<T extends List> { ... } これは、「extends」キーワードを使用して行われます。 C ++でこのキーワードに相当する単純なものはありますか?
158 c++  templates 

4
メンバー関数の静的変数
メンバー関数の静的変数がC ++でどのように機能するかを誰かが説明できますか? 次のクラスがあるとします。 class A { void foo() { static int i; i++; } } の複数のインスタンスを宣言した場合、1つのインスタンスをA呼び出すと、すべてのインスタンスのfoo()静的変数が増加しiますか?それとも呼ばれたものだけですか? 各インスタンスには独自ののコピーがあると想定していましたがi、私が持っているいくつかのコードをステップ実行すると、そうでないことを示しているようです。
158 c++  static  scope 

6
std :: mapを反復する順序はわかっていますか(標準で保証されていますか)?
つまり、std::mapの要素はキーに従ってソートされています。したがって、キーが整数であるとしましょう。からstd::map::begin()をstd::map::end()使用して反復する場合for、標準では、昇順でソートされたキーを持つ要素を結果として反復することを保証していますか? 例: std::map<int, int> map_; map_[1] = 2; map_[2] = 3; map_[3] = 4; for( std::map<int, int>::iterator iter = map_.begin(); iter != map_.end(); ++iter ) { std::cout << iter->second; } これは印刷が保証されています234か、それとも実装が定義されていますか? 現実の理由:私が持っているstd::mapとintキー。非常にまれな状況で、具体的なint値よりも大きいキーを使用して、すべての要素を反復処理します。うん、それstd::vectorはより良い選択のように思えますが、私の「非常にまれな状況」に注意してください。 編集:私は知っている、の要素std::mapがソートされていることを知っています...それを指摘する必要はありません(ここでのほとんどの答えに対して)。私の質問にもそれを書きました。 コンテナーを反復処理するときに、イテレーターと順序について尋ねていました。答えてくれて@Kerrek SBに感謝します。
158 c++  dictionary  stl  standards 

8
C ++クラスメンバーを明示的に初期化しない場合、どのように初期化されますか?
私はプライベートmemebersを持つクラスを持っていると仮定しptr、name、pname、rname、crnameとage。自分で初期化しないとどうなりますか?次に例を示します。 class Example { private: int *ptr; string name; string *pname; string &rname; const string &crname; int age; public: Example() {} }; そして私はします: int main() { Example ex; } メンバーはどのようにexで初期化されますか?ポインタはどうなりますか?やるstringとintデフォルトコンストラクタで0-intializedますstring()とint()?参照メンバーはどうですか?また、const参照についてはどうですか? 他に何について知っておくべきですか? これらのケースをカバーするチュートリアルを知っている人はいますか?たぶんいくつかの本に?私は大学の図書館で多くのC ++の本にアクセスできます。 私はそれを学びたいので、より良い(バグのない)プログラムを書くことができます。フィードバックは役に立ちます!

13
ループ内で変数を宣言するためのオーバーヘッドはありますか?(C ++)
次のようなことをすると、速度や効率が低下するのではないかと思っています。 int i = 0; while(i < 100) { int var = 4; i++; } これはint var100回宣言します。あるように思えますが、よくわかりません。代わりにこれを行う方がより実用的/高速でしょうか? int i = 0; int var; while(i < 100) { var = 4; i++; } それとも、速度的にも効率的にも同じですか?

13
範囲からランダムな整数を生成する
特定の範囲(境界値を含む)でランダムな整数を生成する関数が必要です。不合理な品質/ラン​​ダム性の要件はありません。4つの要件があります。 私はそれが速くなる必要があります。私のプロジェクトでは数百万(場合によっては数千万)の乱数を生成する必要があり、現在のジェネレーター関数がボトルネックであることが判明しています。 私はそれが適度に均一である必要があります(rand()の使用は完全にうまくいきます)。 min-maxの範囲は、<0、1>から<-32727、32727>までです。 シード可能でなければなりません。 現在、次のC ++コードがあります。 output = min + (rand() * (int)(max - min) / RAND_MAX) 問題は、それが実際に均一ではないことです。maxは、rand()= RAND_MAXの場合にのみ返されます(Visual C ++の場合は1/32727です)。これは、<-1、1>のような小さな範囲の主要な問題であり、最後の値はほとんど返されません。 だから私はペンと紙をつかんで、次の式を思いつきました((int)(n + 0.5)整数の丸めのトリックに基づいています): しかし、それでも均一な分布は得られません。10000サンプルで繰り返し実行すると、値-1、0、1の比率は37:50:13になります。 より良い処方を提案していただけませんか?(または全体の疑似乱数ジェネレータ関数)
157 c++  random 

4
C ++エラー: 'clock_gettime'および 'clock_settime'への未定義の参照
私はUbuntuにかなり慣れていますが、これを機能させることができません。私の学校のコンピューターでは問題なく動作し、私が何をしていないのかわかりません。私はusr / includeを確認しましたが、time.hは問題ありません。これがコードです: #include <iostream> #include <time.h> using namespace std; int main() { timespec time1, time2; int temp; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1); //do stuff here clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2); return 0; } IDEとしてCodeBlocksを使用して、ビルドと実行も行っています。どんな助けでも素晴らしいだろう、ありがとう。
157 c++  linux  ubuntu  posix  time.h 

9
z / OS上のC ++でCソケットAPIを使用する方法
私はで正しく動作させるにはCのソケットAPIを取得して問題抱えているC++のをz/OS。 含めていますがsys/socket.h、まだ定義されていないことを示すコンパイル時エラーが発生します。AF_INET 私は明らかなものを欠いていますか、またはこれがオンにz/OSなっていると問題がはるかに複雑になるという事実に関連していますか? 更新:さらに調査したところ、#ifdef私がぶつけているものがあることがわかりました。z/OS私が使用しているソケットの「タイプ」を定義しない限り、どうやら満足しません: #define _OE_SOCKETS 今、私_OE_SOCKETSはこれが実際に何のためにあるのかz/OS私にはわかりません。そのため、ソケットプログラマがいる場合(3人全員)、おそらくこれがどのように機能するのかを簡単に説明できますか? テストアプリ #include <sys/socket.h> int main() { return AF_INET; } コンパイル/リンク出力: cxx -Wc,xplink -Wl,xplink -o inet_test inet.C "./inet.C", line 5.16: CCN5274 (S) The name lookup for "AF_INET" did not find a declaration. CCN0797(I) Compilation failed for file ./inet.C. Object file not created. sys / …
157 c++  c  sockets  mainframe  zos 


2
iterator-> secondはどういう意味ですか?
C ++では、タイプは何std::map<>::iteratorですか? itタイプのオブジェクトにはを返すstd::map<A,B>::iteratorオーバーロードがoperator ->ありstd::pair<A,B>*、にstd::pair<>はメンバーfirstとsecondメンバーがあることを知っています。 しかし、これらの2つのメンバーは何に対応し、マップに格納されている値にアクセスする必要があるのはなぜit->secondですか?
157 c++  stl  iterator 

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