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

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


27
Cステートマシン設計[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3か月前に閉鎖。 この質問を改善する CとC ++が混在する小さなプロジェクトを作成しています。私は、ワーカースレッドの1つの中心に、小さな風のステートマシンを1つ構築しています。 SOの達人があなたのステートマシン設計テクニックを共有するかどうか疑問に思っていました。 注:私は主に、試行錯誤した実装技術の後にいます。 更新: SOで収集されたすべての優れた入力に基づいて、私はこのアーキテクチャで解決しました:


30
C ++コンソールアプリケーションがすぐに終了しないようにする方法
最近、私はこのウェブサイトからC ++を学ぼうとしています。残念ながら、コードサンプルの1つを実行しようとすると、そのプログラムが約0.5秒間開いてからすぐに閉じます。努力の成果を確認できるように、プログラムがすぐに終了しないようにする方法はありますか?
193 c++  console  exit  terminate  c++-faq 


9
C ++ 11で廃止されたC ++イディオムはどれですか?
新しい標準では、物事を行うための新しい方法があり、多くは古い方法よりも優れていますが、古い方法はまだ問題ありません。また、下位互換性の理由から、新しい標準が公式にあまり非推奨にならないことも明らかです。したがって、残っている問題は次のとおりです。 C ++ 11スタイルよりも確実に劣るコーディングの古い方法と、代わりに今できることは何ですか? これに答えるには、「自動変数を使用する」などの明らかなことをスキップできます。
192 c++  c++11  c++-faq 

21
C ++のポインターにNULLまたは0(ゼロ)を使用していますか?
C ++がCの上にボルトで固定された初期の頃は、NULLはとして定義されていたため、使用できませんでした(void*)0。NULLを以外のポインタに割り当てることはできませんvoid*。当時、0nullポインタに(ゼロ)を使用することが受け入れられていました。 今日まで、私はゼロをnullポインターとして使用し続けましたが、私の周りの人たちはを使用することを強く求めていますNULL。個人的にはNULL、既存の値に名前()を付けることには何のメリットもないと思います。また、ポインタを真理値としてテストすることも好きなので、 if (p && !q) do_something(); 次に、ゼロを使用する方が理にかなっています(を使用する場合と同様に、NULL論理的に使用することはできません。ゼロであると想定しない限り、p && !q明示的に比較する必要がありNULLます。NULLNULL NULLよりもゼロ(またはその逆)を優先する客観的な理由はありますか、それともすべて個人的な好みですか? 編集:RAIIと例外を使用して、ゼロ/ NULLポインターを使用することはめったにありません(ただし、元々言うことを意味します)必要がありますが、まだ必要な場合があります。
192 c++  null 


7
STLの両端キューとは実際には何ですか?
OverаэтотвопросестьответынаStack Overflowнарусском:Особенностьразмещениеэлементоввstd :: deque 私はSTLコンテナーを見て、それらが実際に何であるか(つまり、使用されるデータ構造)を理解しようとしていましたが、両端キューによって停止しました。一定の時間ですが、演算子[]が一定の時間で行われるという約束に困っています。リンクされたリストでは、任意のアクセスはO(n)であるべきですよね? そして、それが動的配列である場合、どのようにして一定の時間で要素を追加できますか?再割り当てが発生する可能性があり、O(1)はvectorの場合と同様に償却コストであることに注意してください。 したがって、一定の時間で任意のアクセスを可能にし、同時に新しい大きな場所に移動する必要がないこの構造は何なのかと思います。
192 c++  stl  deque 

2
関数内の静的constexpr変数は意味がありますか?
関数(たとえば、大きな配列)内に変数がある場合、両方staticとそれを宣言することは意味がありconstexprますか?constexpr配列がコンパイル時に作成されることを保証するので、static役に立たないでしょうか? void f() { static constexpr int x [] = { // a few thousand elements }; // do something with the array } されstatic、実際に生成されたコードや意味論の面でそこに何かをやって?
192 c++  static  c++11  constexpr 

2
C ++ 11と重複するBoost機能はどれですか?
私はC ++のスキルを数年前に棚に置いていましたが、今は再び必要になったときに状況が変わったようです。 C ++ 11を手に入れました。私の理解では、多くのBoost機能と重複しています。 それらの重複が存在するいくつかの概要はありますか?Boostライブラリはレガシーになるでしょう、Boostの代わりにどのC ++ 11機能を使用するべきか、どちらを使用しない方が良いか、という推奨はありますか?
191 c++  boost  c++11 

12
/ proc / self / exeなしで現在の実行可能ファイルのパスを見つける
Linuxは/ proc / self / exeを使えば簡単だと思います。しかし、クロスプラットフォームインターフェイスを備えたC / C ++で現在のアプリケーションのディレクトリを見つける便利な方法があるかどうか知りたいのですが。argv [0]をいじくり回しているプロジェクトをいくつか見ましたが、完全に信頼できるとは思えません。 たとえば、/ proc /を持たないMac OS Xをサポートする必要がある場合、どうしますか?#ifdefsを使用して、プラットフォーム固有のコード(NSBundleなど)を分離しますか?または、argv [0]、$ PATHなどから実行可能ファイルのパスを推測しようとすると、エッジケースでバグを見つける危険がありますか?
190 c++  c  linux  macos  executable 

19
CまたはC ++でバイナリリテラルを使用できますか?
2進数を処理する必要があります。 私は書いてみました: const x = 00010000; しかし、それはうまくいきませんでした。 と同じ値を持つ16進数を使用できることはわかっていますが00010000、C ++に2進数用の型があるかどうか、ない場合は、問題の別の解決策がありますか?
190 c++  c  binary 

13
あなたはstd :: vectorから継承しないでください
わかりました、これを告白するのは本当に難しいですが、私は現在、から継承する強い誘惑がありstd::vectorます。 ベクター用に約10のカスタマイズされたアルゴリズムが必要であり、それらを直接ベクターのメンバーにしたい。しかし当然ながら、の残りstd::vectorのインターフェイスも必要です。さて、私の最初のアイデアは、法律を遵守する市民std::vectorとして、MyVectorクラスにメンバーを含めることでした。しかし、私はすべてのstd :: vectorのインターフェースを手動で再提供する必要があります。入力するには多すぎます。次に、私はプライベート継承について考えました。そのため、メソッドを再提供する代わりusing std::vector::memberに、パブリックセクションにをまとめて記述します。これも実際には退屈です。 そして、私は実際に、私は単純にからパブリックに継承できると本当に思っていますがstd::vector、このクラスは多態的に使用されるべきではないという警告をドキュメントに提供しています。ほとんどの開発者は、これを多態的に使用してはならないことを理解するのに十分な能力があると思います。 私の決定は完全に不当なものですか?もしそうなら、なぜですか?追加のメンバーが実際にはメンバーになるが、ベクターのすべてのインターフェースを再入力する必要がない代替案を提供できますか?疑わしいですが、できれば幸せです。 また、一部の馬鹿が次のようなものを書くことができるという事実は別として std::vector<int>* p = new MyVector MyVectorを使用する上で他の現実的な危険はありますか?現実的と言うことで、ベクトルへのポインタを受け取る関数を想像するようなものを破棄します... さて、私は私のケースを述べました。私は罪を犯しました。今私を許すかどうかはあなた次第です:)
189 c++  oop  inheritance  stl  vector 

5
ノーリターンのポイントは何ですか?
[dcl.attr.noreturn]は次の例を提供します: [[ noreturn ]] void f() { throw "error"; // OK } しかし[[noreturn]]、関数の戻り値の型が既にあるので、私は何の意味があるのか​​わかりませんvoid。 では、noreturn属性のポイントは何ですか?どのように使用することになっていますか?

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