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

静的に型付けされた自由形式のマルチパラダイムでコンパイルされた汎用プログラミング言語であるC ++に関する質問。

4
1つはC ++とWebをどのようにインターフェースしますか(たとえばGoogleで)?
グーグルは、長年コーディングしてきた途方もない量のC ++で有名です。間違っている場合は修正してください。ただし、Googleの主要な検索エンジンの大部分はC ++で作成されています。C ++で書かれたプログラムをどのように取り、Webサイトとインターフェイスさせるのですか? 注:私は、特にGoogleがこれを行う方法を探しているのではなく、一般的にどのように行われるかを探しています。

5
例外を設計する方法
私は非常に簡単な質問に苦労しています: 現在、サーバーアプリケーションで作業しています。例外の階層を作成する必要があります(一部の例外は既に存在しますが、一般的なフレームワークが必要です)。どうすればこれを開始できますか? 私はこの戦略に従うことを考えています: 1)何が問題なのでしょうか? 何かが求められますが、これは許可されていません。 何らかの質問があり、許可されていますが、パラメーターが間違っているため機能しません。 何らかの質問があり、許可されていますが、内部エラーのために機能しません。 2)リクエストを開始しているのは誰ですか? クライアントアプリケーション 別のサーバーアプリケーション 3)メッセージ処理:サーバーアプリケーションを扱っているので、メッセージの送受信がすべてです。それでは、メッセージの送信がうまくいかない場合はどうでしょうか? そのため、次の例外タイプが発生する場合があります。 ServerNotAllowedException ClientNotAllowedException ServerParameterException ClientParameterException InternalException(サーバーがリクエストの送信元を知らない場合) ServerInternalException ClientInternalException MessageHandlingException これは例外階層を定義するための非常に一般的なアプローチですが、いくつかの明らかなケースが欠けているのではないかと心配しています。私がカバーしていない分野についてのアイデアがありますか、この方法の欠点を知っていますか、この種の質問に対するより一般的なアプローチがありますか(後者の場合、どこで見つけることができますか)? 前もって感謝します
11 design  c++  exceptions  stl 

2
C ++の線形代数パッケージを使用する場合、遅延と見なされますか?
最初に、質問を実際に述べる前に、背景を説明します。私は物理学を研究しており、私のプログラミングクラスはすべて、MATLABのような簡単なプログラミング言語で行われています。簡単に言うと、言語はあなたのために多くのことを考えているということです...次の数年間、私はコンピューターサイエンスのコースを受講し、プログラミングのキャリアを追求することを考えています。 多くの大学のコースがC ++であると考えると、MATLABと同様の構文を持つ線形代数パッケージ(Armadillo)を使用することは怠consideredと見なされますか? 現在、遺伝的アルゴリズムをコーディングしていますが、MATLABでは高速になりましたが、C ++ではこれらのパッケージを使用せずに多くの時間を費やしています。 実生活ではどのように機能しますか?どのパッケージを使用できますか? たとえば、armadilloでC ++の知識を構築したくないし、「vector.h」、「algorithm」、「list」など、他のより広く使用されているパッケージの深い知識も持ちたくない
11 c++  experience 

2
ネストされた静的ライブラリの依存関係は可能ですか?
私はQTで働いています。 静的ライブラリは別の静的ライブラリに依存できますか?(静的ライブラリは別の静的ライブラリをリンクすることで作成されます) はいの場合、lib2にリンクした後、生成されたlib(lib1)にlib2のすべてのコードが含まれない可能性はありますか? 私のQtプロジェクトでは、複数のライブラリに依存する静的ライブラリを使用しています。すべてのライブラリ(プロジェクト内のすべてのヘッダーを含む)を追加する必要がありましたが、コードに必要なのは1つのlib(およびそのクラスの1つの.h)だけです。 シナリオを説明してください。
11 c++  qt  static-linking 

4
コマンドパターン設計
コマンドパターンのこの古い実装があります。これは、すべてのDIOperation実装を通じてContextを渡すようなものですが、後で学習と学習のプロセス(決して停止しない)で最適ではないことに気付きました。また、ここでの「訪問」は実際には合わず、混乱するだけだと思います。 また、コマンドは他のことについて何も知らず、現時点ではすべてが同じキーと値のペアを共有するため、コードのリファクタリングを考えています。どのクラスがどのKey-Valueを所有しているかを維持するのは非常に難しく、変数の重複につながる場合があります。 ユースケースの例:CommandBがCommandAによって設定されるUserNameを必要とするとしましょう。CommandAはキーUserNameForCommandB = Johnを設定する必要がありますか?または、共通のUserName = John Key-Value を共有する必要がありますか?UserNameが3番目のコマンドで使用されるとどうなりますか? この設計を改善するにはどうすればよいですか?ありがとう! class DIParameters { public: /** * Parameter setter. */ virtual void setParameter(std::string key, std::string value) = 0; /** * Parameter getter. */ virtual std::string getParameter(std::string key) const = 0; virtual ~DIParameters() = 0; }; class DIOperation { public: /** * …

3
低遅延Unix / Linux
ほとんどの低レイテンシ/高頻度のプログラミングジョブ(ジョブの仕様に基づく)は、UNIXプラットフォームに実装されているようです。多くの仕様で、彼らは「低遅延linux」タイプの経験を持つ人々に特別な要求をしています。 これがリアルタイムのLinux OSを意味しないと仮定すると、人々はこれが何を指しているのか私に助けを与えることができますか?CPUアフィニティをスレッドに設定できることは知っていますが、それ以上のことを要求していると思います。 カーネルのチューニング?(とにかく、ソーラーフレアのようなメーカーはカーネルバイパスネットワークカードを製造していると聞きましたが)? DMAまたはプロセス間の共有メモリはどうですか?人々が私に簡単なアイデアを与えてくれれば、Googleで調査をすることができます。 (この質問には、おそらく高頻度取引に精通した人が必要です)
11 c++  c  performance  linux  latency 

2
仕事をコンピューターのネットワークに分割する方法は?
次のようなシナリオを想像してください。大量のデータを生成する中央コンピューターがあるとします。このデータは何らかの処理を経る必要がありますが、残念ながら生成には時間がかかります。処理がリアルタイムに追いつくために、より多くのスレーブコンピューターを接続します。 さらに、ネットワークの中間ジョブからスレーブが脱落する可能性や、追加のスレーブが追加される可能性を考慮する必要があります。中央コンピューターは、すべてのジョブが満足のいくように終了し、スレーブによってドロップされたジョブが別のジョブに再タスクされることを保証する必要があります。 主な質問は、これを達成するためにどのアプローチを使用する必要があるかです。 しかし、おそらく次のことが答えを見つけるのに役立ちます:私がやろうとしていることに名前やデザインパターンがありますか? これらのコンピューターを相互に通信させるという目標を達成するには、どのような知識領域が必要ですか?(例えば、私がある程度の知識を持っているデータベースで十分でしょうか、またはこれにはまだ知識のないソケットが含まれますか?) そのようなシステムの例はありますか?主な質問は少し一般的ですので、開始点/参照点があると良いでしょう。 注:私はc ++とWindowsの制約を想定しているので、その方向を指す解決策が評価されます。
11 c++  windows  networks 

8
JavaはC / C ++と比較してパフォーマンスを「微調整」するのがはるかに難しいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 JVMの「魔法」は、プログラマーがJavaのマイクロ最適化に与える影響を妨げますか?私は最近C ++で読んだことがありますが、データメンバーの順序が最適化を提供できる場合があります(マイクロ秒環境で許可されます)。 まともなアルゴリズムがより大きな速度向上を提供することを感謝しますが、正しいアルゴリズムを取得すると、JVM制御のためにJavaを微調整するのが難しくなりますか? そうでない場合は、Javaで使用できるトリックの例を(単純なコンパイラフラグのほかに)挙げてください。

4
C ++の識別子での汎用文字名の使用とは
C ++標準では(私は新しいもので、それに気づいたが、それはすでにC ++ 03には存在しなかった)のように書かユニバーサル文字名を指定\uNNNNし、\UNNNNNNNNおよびUnicodeのコードポイントで文字を表しますNNNN/ NNNNNNNN。これは、特に明示的にUTF-8、UTF-16、およびUCS-4文字列リテラルも定義されているため、文字列リテラルで役立ちます。ただし、識別子には汎用文字リテラルも使用できます。その背後にある動機は何ですか? 構文は明らかに完全に判読不能で、識別子はリンカ用にマングルされている可能性があり、とにかくシンボルを名前で取得する標準関数があったようではありません。それでは、なぜ誰もが実際にユニバーサル文字リテラルを含む識別子を使用するのでしょうか? 編集:実際にはすでにC ++ 03に存在していたので、追加の質問は、それを使用したコードを実際に見たかどうかです。
11 c++  c++11 

8
変数はどのように状態を導入しますか?
「C ++ Coding Standards」を読んでいて、この行がありました: 変数は状態を導入するため、可能な限り短いライフタイムで、できるだけ少ない状態を処理する必要があります。 変異するものは最終的に状態を操作しませんか?できるだけ少ない状態に対処する必要があるとはどういう意味ですか? C ++などの不純な言語では、状態管理は本当にあなたがしていることではありませんか?そして、変数の寿命を制限する以外に、できるだけ少ない状態に対処する他の方法は何ですか?

3
クロスプラットフォームのデスクトッププログラミング:C ++とPython [非公開]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 申し分なく、始めに、私はアマチュアObj-C / CocoaおよびRuby w / Railsプログラマーとしての経験があります。これらは素晴らしいですが、クロスプラットフォームのアプリケーションを書くのにあまり役に立ちません(GNUStepがいつか最初にマルチプラットフォームになるのに十分なものになることを願っていますが、その日は今日ではありません)。 私が収集できるものからのC ++は、非常に強力ですが、マスターするには半年以上かかる巨大でcanい巨人でもあります。また、メモリ管理はすべて手作業なので、足で自分自身を撃つだけでなく、足全体を吹き飛ばすことが非常に簡単にできることも読みました。明らかに、これはすべて非常に威圧的です。それが正しいか? PythonはC ++のパワーの大部分を提供しているようで、速度を犠牲にして簡単に入手できます。この犠牲の大きさは?それは意味がありますか、それとも無視できますか? 合理的な時間内に高速で安定した信頼性の高いアプリケーションを作成できますか? また、UIにQtを使用するか、プラットフォームごとに個別のネイティブフロントエンドを維持する方が良いでしょうか? 編集:さらに明確にするために、書きたいアプリケーションには2つのタイプがあります。1つは非常に使いやすく便利なデータベースフロントエンドであり、もう1つは間違いなく後で登場する3Dワールドエディターです。

4
二項演算子の前後に改行を入れるべきですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 PythonまたはJavascriptを使用している場合は、改行がコードを途中で終了させないように、常に前の行の最後にバイナリ演算子を配置する必要があります。エラーをキャッチするのに役立ちます。 しかし、CまたはC ++では、これは問題ではないので、私は疑問に思っています: 最初のバージョンよりも2番目のバージョンを好む理由はありますか? return lots_of_text + 1; 対 return lots_of_text + 1; (たとえば、そのうちの1つは他の種類のエラーの防止に役立ちますか?または、そのうちの1つはより読みやすいと見なされますか?)
11 c++  coding-style 

3
プログラミングスタイルに関するインタビューの質問の処理方法[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 インタビューのC ++プログラマーとして、面接担当者が良いプログラミングスタイルの知識を探りたいと思っている状況に繰り返し気づきました。これらは通常、OOPの基本的な知識に集中していました。 OOPは概念をカプセル化するのに役立つことを知っており、毎日使用しています。ただし、C ++などの言語ではさまざまなスタイルが可能であり、TMPやSTLアルゴリズムなどの一部のC ++アプローチはまったくOOPではありません(むしろ関数型プログラミングに似ています)。 well慢だとか、基本を認めない誰かと出会うことなく。質問者のOOPに対するこの強調は、OOPが万能薬であると信じられていた90年代に彼らが社交化されたことに起因するのではないかと恐れていますが、それは取るに足りない見方です。 このような質問を最大限に活用するにはどうすればよいですか?

4
C ++の「インターフェース」という用語
Javaはとを明確に区別classしinterfaceます。(C#もそうだと思いますが、経験はありません)。ただし、C ++を記述するとき、クラスとインターフェイスの間に言語による強制的な区別はありません。 そのため、Javaには多重継承がないための回避策としてインターフェイスを常に見てきました。このような区別をすることは、C ++ではarbitrary意的で無意味に感じます。 私は常に「最も明白な方法で物事を書く」アプローチを採用する傾向がありました。そのため、C ++でJavaのインターフェースと呼ばれるものがある場合、例えば: class Foo { public: virtual void doStuff() = 0; ~Foo() = 0; }; そして、私Fooはおそらくほとんどの実装者が、おそらく私が書くだろういくつかの一般的な機能を共有したいと決めた。 class Foo { public: virtual void doStuff() = 0; ~Foo() {} protected: // If it needs this to do its thing: int internalHelperThing(int); // Or if it doesn't need the …

4
コードベースが均一に遅くなることに対するアプローチ
適度なサイズのC ++コードベース(10Mloc)に取り組んでいますが、最適化の取り組みにより均一に遅くなっています。 このコードベースは、機能させるために組み合わせるライブラリのセットです。これらのライブラリが通信する方法の一般的なフレームワークが開発されたとき、パフォーマンスに重点が置かれ、後で追加された部分が増えても、一般的なフレームワークはあまり変更されませんでした。最適化は、必要なときに、ハードウェアの進化とともに行われました。これにより、高価な早期決定が明らかになったのはかなり後のことです。コードベースの大部分を書き直す必要があるため、さらなる最適化ははるかに高価になります。原則として、コードははるかに高速に実行できるはずであることがわかっているため、望ましくないローカルミニマムに近づいています。 簡単な最適化の機会によって簡単に混同されない、グローバルに最適なパフォーマンスのソリューションへのコードベースの進化を引き継ぐために何が変わるかを決定するのに役立つ成功した方法論はありますか? 編集 現在のプロファイリング方法に関する質問に答えるには: 実際、このコードを使用する方法は2つだけあり、どちらも恥ずかしいほど並行しています。プロファイリングは、大量の入力サンプルで平均化されたウォールクロック時間と、より詳細な実行(命令コスト、分岐予測ミス、キャッシュの問題)の両方で行われます。これは非常に均質なマシン(数千の同一マシンのクラスター)でのみ実行されるため、うまく機能します。私たちは通常、すべてのマシンをほとんどの時間、高速で稼働させているため、追加の新しいものを見ることができます。もちろん、問題は、新しい入力バリエーションが現れたときに、他のユースケースで最も明らかな非効率性を取り除き、「最適に実行される」シナリオの数を絞り込む可能性があるため、後期のペナルティが発生する可能性があることです。
11 c++  optimization 

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