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

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

3
CMakeのinclude_directoriesとtarget_include_directoriesの違いは何ですか?
私のC ++コードのディレクトリ構造は次のようになります。 | |->include |->src 私のコードのCMakeLists.txtファイルを書いています。違いを理解したいinclude_directoriesとtarget_include_directories中をCMake。 それらの使用法と、使用するインクルードファイルパスを追加するための違いは何ですか?
134 c++  cmake 

6
1970年から現在のタイムスタンプをミリ秒単位で取得する方法
JavaではSystem.currentTimeMillis()、現在のタイムスタンプをエポックタイムからミリ秒単位で取得するために使用できます。 現在時刻と1970年1月1日UTCの真夜中との差(ミリ秒単位)。 C ++で同じことをどうやって得るのですか? 現在、私はこれを使用して現在のタイムスタンプを取得しています- struct timeval tp; gettimeofday(&tp, NULL); long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds cout << ms << endl; これは正しいですか?
134 c++  timestamp 

18
いつユニオンを使うのですか?Cのみの時代の名残ですか?
私は学びましたが、実際には組合を取得しません。私が通過するすべてのCまたはC ++テキストはそれらを紹介します(時々)が、それらを使用する理由または場所の実用的な例はほとんどありません。現代の(またはレガシーの)場合に組合はいつ役立つでしょうか?使用するスペースが非常に限られている場合、またはAPI(または同様の何か)を開発していて、エンドユーザーに複数のオブジェクト/タイプのインスタンスを1つだけに強制したい場合、私の2つの推測はマイクロプロセッサのプログラミングです。一度。これらの2つの推測は右に近いですか?
133 c++  c  unions 

3
最初から最後まで繰り返しながらマップ要素でerase()を呼び出すとどうなりますか?
次のコードでは、マップをループして、要素を消去する必要があるかどうかをテストしています。要素を消去して繰り返し続けても安全ですか、または別のコンテナにキーを収集して、erase()を呼び出すために2番目のループを実行する必要がありますか? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) { if (pm_it->second == delete_this_id) { port_map.erase(pm_it->first); } } 更新:もちろん、私はこの質問を読んだのですが、関係があるとは思われませんでしたが、私の質問に答えます。
133 c++  stl  iterator 

3
uint64_tを印刷するには?失敗:「形式内の誤った末尾の '%'」
printf uint64_tの非常にシンプルなテストコードを作成しました。 #include <inttypes.h> #include <stdio.h> int main() { uint64_t ui64 = 90; printf("test uint64_t : %" PRIu64 "\n", ui64); return 0; } ubuntu 11.10(64ビット)とgccバージョン4.6.1を使用してコンパイルしましたが、失敗しました。 main.cpp: In function ‘int main()’: main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’ main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]
133 c++  c 


13
95%の場合の値が0または1の場合の非常に大きな配列でのランダムアクセスの最適化
非常に大きな配列でのランダムアクセスの最適化の可能性はありますuint8_tか? uint8_t MyArray[10000000]; 配列の任意の位置の値が 0または1のための95%の全ての症例の、 2中4%の症例、 他の1%のケースでは3から255の間ですか? それで、uint8_tこれに使用する配列よりも良いものはありますか?配列全体をランダムな順序でループするのは可能な限り迅速である必要があり、これはRAM帯域幅で非常に重いため、複数のスレッドが異なる配列に対して同時にそれを行う場合、現在はRAM帯域幅全体です。すぐに飽和します。 5%を除くほとんどすべての値が0または1であることが実際にわかっている場合、そのような大きな配列(10 MB)を持つことは非常に非効率だと感じているので、質問します。したがって、配列内のすべての値の95%実際には、8ビットではなく1ビットしか必要ありません。これにより、メモリ使用量がほぼ1桁削減されます。これに必要なRAM帯域幅を大幅に削減し、結果としてランダムアクセスの速度を大幅に向上させる、よりメモリ効率の高いソリューションが必要だと感じています。

16
Windowsスレッディング:_beginthreadと_beginthreadexとCreateThread C ++
スレッドを開始するためのより良い方法は何ですか_beginthread、_beginthreadxまたはCreateThread? 私はの長所/短所が何であるかを判断しようとしている_beginthread、_beginthreadexとCreateThread。これらのすべての関数は、新しく作成されたスレッドにスレッドハンドルを返します。エラーが発生すると、CreateThreadが少し追加の情報を提供することをすでに知っています(を呼び出すことで確認できますGetLastError)... mこれらの関数を使用していますか? 私はWindowsアプリケーションを使用しているので、クロスプラットフォームの互換性はすでに問題外です。 私はmsdnのドキュメントを読みましたが、たとえば、なぜCreateThreadではなく_beginthreadを使用するのか、またはその逆を行うのかを理解できません。 乾杯! 更新:わかりました。すべての情報に感謝します。WaitForSingleObject()を使用_beginthread()した場合は呼び出すことができない場所もいくつか読んだことがあります_endthread()が、スレッドで呼び出す場合は機能しませんか?そこでの契約は何ですか?
133 c++  c  multithreading  winapi 

8
C ++と比較してDはどれくらい速いですか?
私はDのいくつかの機能が好きですが、ランタイムのペナルティが付いていれば興味がありますか? 比較のために、C ++とDの両方で多くの短いベクトルのスカラー積を計算する単純なプログラムを実装しました。結果は驚くべきものです。 D:18.9秒[最終的な実行時間については下記を参照] C ++:3.8秒 C ++は本当に5倍近く高速ですか、それともDプログラムでミスを犯しましたか? C ++をg ++ -O3(gcc-snapshot 2011-02-19)でコンパイルし、Dをdmd -O(dmd 2.052)で中程度の最近のLinuxデスクトップでコンパイルしました。結果は複数の実行で再現可能であり、標準偏差は無視できます。 ここにC ++プログラム: #include <iostream> #include <random> #include <chrono> #include <string> #include <vector> #include <array> typedef std::chrono::duration<long, std::ratio<1, 1000>> millisecs; template <typename _T> long time_since(std::chrono::time_point<_T>& time) { long tm = std::chrono::duration_cast<millisecs>( std::chrono::system_clock::now() - time).count(); time = …
133 c++  performance  runtime  d 

16
constの正確さで私を売る
では、なぜconstをできるだけ頻繁に使用することが常に推奨されているのでしょうか。constを使用することは、C ++のヘルプよりも面倒なことのようです。しかし、繰り返しますが、私はこれをpythonの観点から考えています。何かを変更したくない場合は、変更しないでください。つまり、ここでいくつかの質問があります: constとしてマークするたびにエラーが発生し、constになるように他の関数をどこかに変更する必要があるようです。次に、これにより、別の機能をどこかで変更する必要があります。これは経験を積むだけで簡単になるものですか? constを使用するメリットは、問題を補うのに本当に十分ですか?オブジェクトを変更するつもりがない場合は、それを変更しないコードを作成しないでください。 この時点では、正確性と保守性の目的でconstを使用することの利点に最も焦点を合わせていることに注意してください。ただし、パフォーマンスへの影響を理解するのも良いことです。


3
OS XでのLLVMとclang
OS Xのllvm、clang、gccについて質問があります。 llvm-gcc 4.2、llvm 2.0、clangの違いは何ですか?私はそれらすべてがllvmに基づいていることを知っていますが、それらはどのように違うのですか? 高速なコンパイルに加えて、gccに対するllvmの利点は何ですか?
133 c++  c  gcc  llvm  clang 


4
Qt 5でオーバーロードされた信号とスロットを接続する
新しいシグナルスロット構文で説明されているように、Qt 5の(メンバー関数へのポインターを使用した)新しいシグナル/スロット構文を理解するのに問題があります。私はこれを変更しようとしました: QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)); これに: QObject::connect(spinBox, &QSpinBox::valueChanged, slider, &QSlider::setValue); しかし、コンパイルしようとするとエラーが発生します。 エラー:の呼び出しに一致する関数がありません QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int)) Linuxでclangとgccの両方を試してみました-std=c++11。 何が悪いのですか、どうすれば修正できますか?
133 c++  qt  qt5 

6
std :: unique_ptrメンバーでカスタム削除機能を使用するにはどうすればよいですか?
unique_ptrメンバーを持つクラスがあります。 class Foo { private: std::unique_ptr<Bar> bar; ... }; Barは、create()関数とdestroy()関数を持つサードパーティのクラスです。 std::unique_ptrスタンドアロン関数でwith it を使用したい場合、次のことができます。 void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... } std::unique_ptrクラスのメンバーとしてこれを行う方法はありますか?

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