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

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

13
cppファイルを含めず、代わりにヘッダーを使用する必要があるのはなぜですか?
それで、私は最初のC ++プログラミングの課題を終え、成績を受け取りました。しかし、グレーディングによると、私はの成績を失いましたincluding cpp files instead of compiling and linking them。それが何を意味するのか私はあまり明確ではありません。 私のコードを振り返ってみると、クラスのヘッダーファイルを作成しないことを選択しましたが、cppファイルですべてを行いました(ヘッダーファイルがなくても正常に動作するように見えました...)。採点者が私が '#include "mycppfile.cpp";'と書いたことを意味していたと思います。一部のファイルで。 #includecppファイルを作成する理由は次のとおりです。-ヘッダーファイルに入るはずのものがすべてcppファイルにあるため、ヘッダーファイルのように振る舞った-monkey-see-monkeyのやり方で、他のファイルを見たヘッダーファイルが#includeファイルに含まれていたので、cppファイルにも同じことを行いました。 それで、私は正確に何をしましたか、そしてそれはなぜ悪いのですか?
146 c++  header-files 

1
enumクラスにstatic_castの無効な値をキャストするとどうなりますか?
次のC ++ 11コードを考えてみます。 enum class Color : char { red = 0x1, yellow = 0x2 } // ... char *data = ReadFile(); Color color = static_cast<Color>(data[0]); data [0]が実際には100であると仮定します。標準に従って色は何に設定されていますか?特に、後で行う場合 switch (color) { // ... red and yellow cases omitted default: // handle error break; } 標準はデフォルトがヒットすることを保証しますか?そうでない場合、ここでエラーをチェックするための適切で最も効率的で最もエレガントな方法は何ですか? 編集: おまけとして、標準はこれについて何らかの保証をしていますが、明白な列挙型がありますか?
146 c++  c++11 


8
uint8_tはcoutで印刷できません
C ++で整数を処理することについて奇妙な問題があります。 変数に値を設定して出力する簡単なプログラムを書いたが、期待どおりに動作しない。 私のプログラムには2行のコードしかありません。 uint8_t aa = 5; cout << "value is " << aa << endl; このプログラムの出力は value is つまり、は空白で印刷されaaます。 上記のコードに変更uint8_tするとuint16_t、魅力のように機能します。 私は64ビットのUbuntu 12.04(Precise Pangolin)を使用していますが、コンパイラのバージョンは次のとおりです。 gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
146 c++ 


3
C / C ++プリプロセッサの1行に1つのポンド/ハッシュ記号(#)を付ける目的は何ですか?
私はBoostライブラリのソースコードを見ていましたが、プリプロセッサディレクティブが付加されていないシングルポンド記号がよくあることに気づきました。GCCプリプロセッサのマニュアルと仕様ガイドを読みましたが、何も見つかりません。 (1) #ifndef BOOST_CONFIG_HPP (2) # include <boost/config.hpp> (3) #endif (4) # (5) #if defined(BOOST_HAS_PRAGMA_ONCE) (6) # pragma once (7) #endif 4行目では、ポンド記号の後に何もありません。これはどのような影響がありますか?Cプリプロセッサ(CPP)仕様で定義されていますか? Boostはクロスプラットフォームライブラリであるため、CPPで正しく解析できると思います。コード全体にランダムなポンド記号/ハッシュ記号があると、どのような影響/副作用がありますか?
145 c++  c  boost  c-preprocessor 

5
(a%256)が(a&0xFF)と異なるのはなぜですか?
私が(a % 256)書い(a & 0xFF)たかのように、オプティマイザを実行すると自然に効率的なビット単位の演算が使用されるといつも思っていました。 コンパイラエクスプローラgcc-6.2(-O3)でテストする場合: // Type your code here, or load an example. int mod(int num) { return num % 256; } mod(int): mov edx, edi sar edx, 31 shr edx, 24 lea eax, [rdi+rdx] movzx eax, al sub eax, edx ret そして、他のコードを試すとき: // Type your code here, …
145 c++  optimization 

4
メンバー関数内のラムダキャプチャリストでメンバー変数を使用する
次のコードはgcc 4.5.1でコンパイルされますが、VS2010 SP1ではコンパイルされません。 #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int main() { return 0; } これはエラーです: error C3480: 'puzzle::grid': …

6
C ++ enumクラスはメソッドを持つことができますか?
2つの値を持つ列挙型クラスがあり、値を受け取ってもう1つの値を返すメソッドを作成したいと思います。型の安全性も維持したいと考えています(そのため、列挙型ではなく列挙型クラスを使用しています)。 http://www.cplusplus.com/doc/tutorial/other_data_types/はメソッドについて何も触れていませんが、どのタイプのクラスにもメソッドを含めることができるという印象を受けました。
145 c++  methods  enums 



12
unordered_setの代わりにsetを使用するのはなぜですか?
C ++ 0xは、他の多くの場所でunordered_set利用可能なものを導入していますboost。私が理解しているのunordered_setは、O(1)ルックアップが複雑なハッシュテーブルです。一方、ルックアップが複雑なsetツリーにすぎませんlog(n)。なぜ誰もがset代わりに使うのunordered_setでしょうか?すなわち、setもはや必要性はありますか?

6
前のconstまたは後のconst?
開始するには、おそらくそれを知っています const使用して、オブジェクトのデータまたはポインタを変更できないようにするか、またはその両方を行うことができることます。 const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer ただし、次の構文も使用できます。 Object const *obj; // same as const Object* obj; 問題と思われるのは、アスタリスクのどちら側に置くかだけです。 constキーワードを入力。個人的にconstは、タイプの左側に置いて、データが変更可能ではないことを指定することを好みます。左から右への考え方ではデータが読みやすいため、どの構文が最初に来るのですか? さらに重要なのは、なぜ指定する2つの正しい方法があるのか constデータ、また、どのような状況で、どちらか一方を好むか、どちらか一方が必要な場合にどちらが必要かということです。 編集: ですから、私が生まれるずっと前にコンパイラが物事を解釈する方法の標準が起草されたとき、これは恣意的な決定だったようです。constはキーワードの左側にあるものに適用されるので(デフォルトでは?)、少なくとも宣言が変更されるときまで、他の方法でキーワードと型修飾子を適用するための「ショートカット」を追加しても害はなかったと思います*または&の解析... これはCの場合もそうでした。
145 c++  c  syntax  const 

4
ios_base :: sync_with_stdio(false);の意味 cin.tie(NULL);
含めることの意味は何ですか ios_base::sync_with_stdio(false); cin.tie(NULL); C ++プログラムでは? 私のテストでは実行時間が短縮されましたが、これを含めることで心配する必要があるテストケースはありますか? 2つのステートメントは常に一緒にする必要がありcin.tie(NULL)ますか、それとも最初のステートメントで十分ですか、つまり無視しますか? また、CおよびC ++コマンドを同時に使用することは、その値が設定されている場合に許可されfalseますか? https://www.codechef.com/viewsolution/7316085 上記のコードはscanf/printf、値がのC ++プログラムで使用するまでは問題なく機能しましたtrue。この場合、セグメンテーション違反が発生しました。これについて考えられる説明は何でしょうか?
145 c++  c 

1
C ++の「using」キーワードの背後にあるロジックは何ですか?
C ++の「using」キーワードの背後にあるロジックは何ですか? それはさまざまな状況で使用されており、それらすべてに共通点があるかどうかを探しています。「using」キーワードがそのように使用されている理由があります。 using namespace std; // to import namespace in the current namespace using T = int; // type alias using SuperClass::X; // using super class methods in derived class
145 c++  c++11 

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