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

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

5
最大要素の位置を見つける
値の配列の最大要素の位置(値ではない)を返す標準関数はありますか? 例えば: 次のような配列があるとします。 sampleArray = [1, 5, 2, 9, 4, 6, 3] sampleArray[3]配列の最大値であることを示す3の整数を返す関数が必要です。
83 c++  algorithm 




17
文字列のベクトルを文字列に内破する方法(エレガントな方法)
文字列のベクトルを文字列に内破する最もエレガントな方法を探しています。以下は、私が現在使用しているソリューションです。 static std::string& implode(const std::vector<std::string>& elems, char delim, std::string& s) { for (std::vector<std::string>::const_iterator ii = elems.begin(); ii != elems.end(); ++ii) { s += (*ii); if ( ii + 1 != elems.end() ) { s += delim; } } return s; } static std::string implode(const std::vector<std::string>& elems, char delim) { std::string …
83 c++  string  stl  stdstring  implode 


6
Google C ++ Testing Frameworkでカスタムメッセージを送信するにはどうすればよいですか?
コードの単体テストにはGoogleC ++テストフレームワークを使用しています。私が使用してC ++ユニットはモジュールのテストでのEclipse CDTを出力分析のため。 以前はCppUnitを使用していましたが、次のように呼び出すことができるマクロファミリ CPPUNIT * _MESSAGEがあります。 CPPUNIT_ASSERT_EQUAL_MESSAGE("message",EXPECTED_VALUE,ACTUAL_VALUE) また、カスタムメッセージを送信して出力をテストできます。 グーグルテスト出力にいくつかのカスタムテキストを含める方法はありますか? (できれば、グーグルテストを使用した自動ユニットテストのために既存のプログラムによって読み取られるデータへのメッセージを含めることができる方法。)
83 c++  googletest 

4
CはC ++よりも著しく高速です[クローズ]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 9年前に閉鎖されました。 私が理解している限り、すべてのスクリプト言語とコア科学プログラムは通常Cで書かれています。これにより、実装が煩雑になりますが、ポイントにまっすぐになります。 これらの人々がパフォーマンスを最大化したいと思っていることは理解していますが、C文字列とC構造体を使用することとC ++クラスを使用することには本当の違いがあります。C ++は、仮想関数を除いて同じように機能するようですが、クラス関数を1回格納し、そのクラスのすべてのインスタンスがその1つの関数を呼び出します。 Cを高速化する理由と、最速でなければならないpythonやsqliteなどのプロジェクトの顕著な違いは何ですか?
83 c++  c  performance 

5
HTML / CSSUIを使用してネイティブC ++アプリを構築するにはどうすればよいですか?
ユーザーインターフェイスにHTMLとCSSを使用しながらC ++プログラムを開発することは可能ですか?Webkitコンテナを使用したJavascriptでのプログラミングについては知っていますが、C ++開発に非常に興味があります。 Windowsで開発したときはC#WPFに夢中になりましたが、今はLinuxに移行し、インターフェイスにマークアップを使用するための優れたツールが見つかりませんでした。このために、非常に軽量で使いやすいHTMLとCSSを、C ++コードとWPFのようなものと組み合わせたいと思います。 ああ、もう1つ、Webではなくデスクトップ開発を探しています。

2
std :: is_functionはどのように実装されていますか?
次の実装はstd::is_functionどうですか? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (CPPリファレンスから) 私には思える、intこの定義の下での関数でしょう。何が欠けていますか?
82 c++  templates  std  sfinae 

10
main関数でargcとargvの名前を変更しても安全ですか?
多くのプログラムは、多くの引数と文字列の配列に標準名を使用します。main関数のプロトタイプは次のようになりますint main(int argc, char *argv[]);。しかし、これらの変数にカスタム名を選択した場合、何かが壊れますか? 例えば int main(int n_of_args, char *args[]); コンパイラーのコンテキストでは、すべてが正常です。これらの変数はmain関数に対してローカルであるため、任意の名前を付けることができます。そして、単純なコードは完全に構築され、実行されます。ただし、これらの名前はプリプロセッサによって使用される場合があります。では、これらの引数の名前を変更しても安全ですか? PS個人的には、これらの名前は非常によく似ており、1文字だけが異なるため、悪いと思います。しかし、誰もが何らかの理由でそれらを使用しています。
82 c++  c  main 

3
このC ++機能の名前は何ですか?
私はいくつかのC ++コードを書いていて、誤って関数の名前を省略していましたWSASocket。しかし、私のコンパイラはエラーを発生させずSOCKET、有効なソケットの代わりに整数値1に関連付けました。 問題のコードは次のようになっているはずです。 this->listener = WSASocket(address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED); しかし、代わりに、次のようになりました。 this->listener = (address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED); 他の言語から来ているので、これはある種の匿名型のようです。それが本当に機能である場合、機能の名前は何ですか? その目的は何ですか? どこから始めればいいのかわからないときは、探すのが難しいです。
82 c++ 

7
shared_ptrを使用する例?
こんにちは私は今日、同じベクトル配列に異なるタイプのオブジェクトを挿入する方法について質問しました、そしてその質問の私のコードは gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ..... ...... virtual void Run() { //A virtual function } }; class ANDgate :public gate {..... ....... void Run() { //AND version of Run } …

4
新しいランダムライブラリがstd :: rand()よりも優れているのはなぜですか?
そこで、rand()は有害と見なされるという話を見て、単純なstd::rand()プラスモジュラスパラダイムよりも乱数生成のエンジン分布パラダイムを使用することを提唱しました。 しかし、私はstd::rand()直接の失敗を見たかったので、簡単な実験をしました: 基本的に、私は2つの機能を書いたgetRandNum_Old()とgetRandNum_New()それが使用して0から5までの間の乱数を生成std::rand()し、std::mt19937+std::uniform_int_distributionそれぞれ。 次に、「古い」方法を使用して960,000(6で割り切れる)の乱数を生成し、0〜5の数値の頻度を記録しました。次に、これらの周波数の標準偏差を計算しました。私が探しているのは、分布が本当に均一である場合に起こることになるので、可能な限り低い標準偏差です。 そのシミュレーションを1000回実行し、各シミュレーションの標準偏差を記録しました。また、ミリ秒単位でかかった時間を記録しました。 その後、まったく同じことを繰り返しましたが、今回は「新しい」方法で乱数を生成しました。 最後に、新旧両方の方法の標準偏差のリストの平均と標準偏差、および新旧両方の方法の時間のリストの平均と標準偏差を計算しました。 結果は次のとおりです。 [OLD WAY] Spread mean: 346.554406 std dev: 110.318361 Time Taken (ms) mean: 6.662910 std dev: 0.366301 [NEW WAY] Spread mean: 350.346792 std dev: 110.449190 Time Taken (ms) mean: 28.053907 std dev: 0.654964 驚いたことに、ロールの総広がりは両方の方法で同じでした。つまり、std::mt19937+std::uniform_int_distributionは単純なstd::rand()+よりも「均一」ではありませんでした%。私が行った別の観察は、新しいものは古い方法よりも約4倍遅いということでした。全体として、品質の向上がほとんどないのに、スピードに莫大なコストを払っていたように見えました。 私の実験には何らかの欠陥がありますか?それともstd::rand()、それほど悪くはなく、おそらくもっと良いのでしょうか? 参考までに、私が使用したコード全体を次に示します。 #include <cstdio> #include <random> #include <algorithm> #include …
82 c++  c++11  random 

2
実質的に無限に見える「for」ループ
私は現在いくつかのコードをデバッグしています、そして私はこの行に出くわしました: for (std::size_t j = M; j <= M; --j) (休暇中の上司によって書かれました。) それは私には本当に奇妙に見えます。 それは何をするためのものか?私には、それは無限ループのように見えます。
82 c++ 

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