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

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

8
C ++の前方宣言とは何ですか?
で:http : //www.learncpp.com/cpp-tutorial/19-header-files/ 以下が言及されています: add.cpp: int add(int x, int y) { return x + y; } main.cpp: #include <iostream> int add(int x, int y); // forward declaration using function prototype int main() { using namespace std; cout << "The sum of 3 and 4 is " << add(3, 4) << …

3
C ++の<=>演算子とは何ですか?
私は学ぶしようとしたが、C ++の演算子、私は上の奇妙な比較演算子につまずいcppreference.com、*このように見えたテーブルに: 「そうですね、これらがC ++の一般的な演算子であるなら、私はそれらをよりよく学ぶ」と私は考えました。しかし、この謎を解明しようとする私の試みはすべて失敗しました。ここでも、Stack Overflowでは検索がうまくいきませんでした。 &lt;=&gt;とC ++の間に関係はありますか? そして、ある場合、この演算子は正確に何をしますか? *その間、cppreference.comがそのページを更新し、&lt;=&gt;オペレーターに関する情報が含まれるようになりました。


11
数値をバイナリ形式で(coutを使用して)印刷する方法は?
私はオペレーティングシステムに関する大学のコースをフォローしており、バイナリから16進数、10進数から16進数などに変換する方法を学習しています。今日は、2の補数(〜number + 1)。 紙で行う演習が2つあります。課題を教師に提出する前に、回答を確認できるようにしたいと思います。最初の数回の演習用にC ++プログラムを作成しましたが、次の問題で自分の答えを確認する方法がわからなくなりました。 char a, b; short c; a = -58; c = -315; b = a &gt;&gt; 3; 我々はバイナリ表現を示すために必要なメモリ内のをa、bとc。 私はそれを紙の上で行いました、そしてそれは私に次の結果を与えます(2の補数の後の数の記憶のすべてのバイナリ表現): a = 00111010(これは文字なので、1バイトです) b = 00001000(これは文字なので、1バイトです) c = 11111110 11000101(短いので2バイト) 私の答えを確認する方法はありますか?C ++で数値のメモリにバイナリ表現を表示する標準的な方法はありますか、または各ステップを自分でコーディングする必要がありますか(2の補数を計算してからバイナリに変換します)?後者はそれほど長くはかからないでしょうが、標準的な方法があるかどうか知りたいです。

4
OSXでの.soと.dylibの違いは何ですか?
.dylibはOSXの動的ライブラリ拡張ですが、従来のUNIXの.so共有オブジェクトを使用できない、または使用してはならない場合、私にはわかりませんでした。 私が持っている質問のいくつか: 概念的なレベルで、.soと.dylibの主な違いは何ですか? いつどちらを使用できますか? コンパイルのトリックとヒント(たとえば、osxでは機能しないため、gcc -shared -fPICの置き換え)
214 c++  c  macos  unix 

11
イプシロンを使用してdoubleと0を比較する
今日、私は(他の誰かが書いた)C ++コードを調べていて、このセクションを見つけました: double someValue = ... if (someValue &lt; std::numeric_limits&lt;double&gt;::epsilon() &amp;&amp; someValue &gt; -std::numeric_limits&lt;double&gt;::epsilon()) { someValue = 0.0; } 私はこれが理にかなっているかどうかを理解しようとしています。 のドキュメントはepsilon()言う: この関数は、1と[double]で表現できる1より大きい最小値の差を返します。 これは0にも適用されepsilon()ますか?つまり、最小値は0より大きいですか?またはそこに数字の間である0と0 + epsilonで表すことができますかdouble? そうでない場合、比較は同等someValue == 0.0ですか?
214 c++  double 


10
静的constと#define
プリプロセッサstatic constよりもvars を使用する方が良い#defineですか?それともコンテキストに依存しますか? 各方法の長所と短所は何ですか?
212 c++  c  const 

22
std :: vectorは単純な配列よりもはるかに遅いですか?
std::vector「配列として実装される」のは一般的な知恵だといつも思っていました。今日私は降りてそれをテストしました、そしてそうではないようです: テスト結果は次のとおりです。 UseArray completed in 2.619 seconds UseVector completed in 9.284 seconds UseVectorPushBack completed in 14.669 seconds The whole thing completed in 26.591 seconds これは約3〜4倍遅くなります。「vector数ナノ秒は遅くなるかもしれない」コメントを正当化しません。 そして私が使用したコード: #include &lt;cstdlib&gt; #include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/date_time/posix_time/ptime.hpp&gt; #include &lt;boost/date_time/microsec_time_clock.hpp&gt; class TestTimer { public: TestTimer(const std::string &amp; name) : name(name), start(boost::date_time::microsec_clock&lt;boost::posix_time::ptime&gt;::local_time()) { …
212 c++  arrays  performance  stl  vector 

17
関数で配列を返す
int arr[5]関数に渡される配列がありますfillarr(int arr[]): int fillarr(int arr[]) { for(...); return arr; } どうすればその配列を返すことができますか? ポインターを返したとしたら、どのように使用しますか?

13
C ++ STLが非常にテンプレートに基づいているのはなぜですか?(*インターフェイス*ではありません)
つまり、必須の名前(標準テンプレートライブラリ)は別として... C ++は当初、OOPの概念をCに提示することを目的としていました。つまり、クラスとクラス階層に基づいて、特定のエンティティが(実行方法に関係なく)実行できることと実行できないことを区別できます。機能のいくつかの構成は、多重継承の問題と、C ++が(Javaなどと比較して)やや不格好な方法でインターフェースの概念をサポートしているという事実のために、この方法で説明することがより困難ですが、それはあります(そして改善された)。 そして、STLとともにテンプレートが登場しました。STLは、古典的なOOPの概念を取り入れ、代わりにテンプレートを使用してそれらをドレインに流しているように見えました。 テンプレートを使用してタイプを一般化する場合は、タイプテーマ自体がテンプレートの操作に無関係である場合(コンテナーなど)、ケースを区別する必要があります。持つvector&lt;int&gt;完璧な理にかなっています。 ただし、他の多くの場合(イテレーターとアルゴリズム)、テンプレート化された型は、概念の実際の詳細が完全にテンプレートの実装によって定義される「概念」(入力イテレーター、順方向イテレーターなど)に従う必要があります。テンプレートで使用されるタイプのクラスではなく、関数/クラス。これは、OOPの使用法とはやや反対です。 たとえば、関数に次のように伝えることができます。 void MyFunc(ForwardIterator&lt;...&gt; *I); 更新:元の質問では不明確だったので、ForwardIteratorをテンプレートにしてすべてのForwardIteratorタイプを許可しても問題ありません。逆に、ForwardIteratorをコンセプトとして使用しています。 は、その定義を見るだけでForward Iteratorを期待します。ここで、実装またはドキュメントのいずれかを調べる必要があります。 template &lt;typename Type&gt; void MyFunc(Type *I); テンプレートの使用に賛成できる2つの主張:コンパイルされたコードは、vtablesを使用する代わりに、使用された型ごとにテンプレートをカスタマイズしてコンパイルすることで、より効率的になります。また、テンプレートはネイティブタイプで使用できるという事実。 ただし、STLのテンプレート化を支持して古典的なOOPを放棄するより深い理由を探していますか?(ここまで読んだとすると:P)
211 c++  oop  templates  stl 

29
C ++プログラムでのプログラムによるエンディアンの検出
ビッグエンディアンまたはリトルエンディアンのアーキテクチャを使用しているかどうかをプログラムで検出する方法はありますか?IntelまたはPPCシステムで実行され、まったく同じコードを使用できる(つまり、条件付きコンパイルがない)コードを記述できる必要があります。



17
Eclipse CDTでC ++ 11 / C ++ 0xサポートを有効にする方法は?
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 これは、C ++ 11コードの一部の例です。 auto text = std::unique_ptr&lt;char[]&gt;(new char[len]); Eclipseエディターは以下について不満を述べています。 Function 'unique_ptr' could not be resolved Makefileコンパイルは正常に動作します。Eclipseがこれらの種類のエラーについて文句を言うのをやめるには?

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