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

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


6
unique_ptr引数をコンストラクタまたは関数に渡すにはどうすればよいですか?
C ++ 11でセマンティクスを移動するのは初めてですがunique_ptr、コンストラクターまたは関数でパラメーターを処理する方法がよくわかりません。このクラスが自分自身を参照していると考えてください。 #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; これは私がunique_ptr引数を取る関数をどのように書くべきですか? そしてstd::move、呼び出しコードで使用する必要がありますか? Base::UPtr b1; Base::UPtr b2(new Base()); b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?

16
静的リンクと動的リンク
特定の状況で動的リンクよりも静的リンクを選択する、またはその逆を選択する、説得力のあるパフォーマンス上の理由はありますか?私は次のことを聞いたり読んだりしましたが、その真実性を保証する主題については十分に知りません。 1)静的リンクと動的リンクの実行時パフォーマンスの違いは、通常は無視できます。 2)(1)は、プロファイルデータを使用してプログラムのホットパスを最適化するプロファイリングコンパイラーを使用している場合は当てはまりません。静的リンクを使用すると、コンパイラーはコードとライブラリコードの両方を最適化できるためです。動的リンクを使用すると、コードのみを最適化できます。ほとんどの時間がライブラリコードの実行に費やされている場合、これは大きな違いを生む可能性があります。それ以外の場合は、(1)が引き続き適用されます。

4
C ++でexternを使用する場合
「Think in C ++」を読んでいて、extern宣言を紹介したところです。例えば: extern int x; extern float y; 意味(定義なしの宣言)は理解できたと思いますが、いつ役立つのか気になります。 誰かが例を提供できますか?

30
関数パラメーターの 'const'の使用
どこまで行くのconst?const必要なときに関数を作成するだけですか、それとも、すべてを独り占めしてどこでも使用しますか?たとえば、単一のブール型パラメーターを取る単純なミューテーターを想像してください。 void SetValue(const bool b) { my_val_ = b; } それはconst実際に役に立ちますか?個人的には、パラメーターを含めて幅広く使用することにしましたが、この場合、それは価値があるのでしょうか。 またconst、関数宣言でパラメーターを省略できるが、関数定義に含めることができることにも驚いた。たとえば、 .hファイル void func(int n, long l); .cppファイル void func(const int n, const long l) これには理由がありますか?それは私には少し珍しいようです。
397 c++  const 

12
現在のCまたはC ++標準のドキュメントはどこにありますか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 StackаэтотвопросестьответынаStack Overflowнарусском:ГдевзятьстандартC ++? 多くの質問に対する答えは「標準」にあるようです。しかし、それはどこにありますか?できればオンライン。 グーグルは、プログラミングフォーラムでの議論の洪水に溺れているため、特にC標準では、場合によっては無駄に感じることがあります。 これを始めるために、これらは私が今探しているものですので、どこに良いオンラインリソースがありますか? C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 


7
C ++でのスレッドの簡単な例
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 C ++で2つの(オブジェクト指向)スレッドを開始する簡単な例を誰かが投稿できますか? Cスタイルのスレッドライブラリを呼び出すのではなく、runメソッド(または類似の何か)を拡張できる実際のC ++スレッドオブジェクトを探しています。 私は、OS固有の要求は省略しました。返答する人はだれでもクロスプラットフォームライブラリを使用して返信することを期待しています。私は今それを明示しているだけです。

6
整数が既知の値のセットを持つ2つの整数(両端を含む)の間にあるかどうかを判断する最速の方法
x >= start && x <= endCまたはC ++ よりも整数が2つの整数の間にあるかどうかをテストするより速い方法はありますか? 更新:私の特定のプラットフォームはiOSです。これは、ピクセルを特定の正方形の円に制限するボックスぼかし関数の一部です。 更新:受け入れられた回答を試した後、通常のx >= start && x <= end方法よりも1行のコードで桁違いに高速化しました。 更新:XCodeからのアセンブラーを使用した前後のコードは次のとおりです。 新しい方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

10
Pretty-print C ++ STLコンテナ
この投稿の最後にある更新に注意してください。 更新:このライブラリ用にGitHubで公開プロジェクトを作成しました! 私は、すべてのSTLコンテナーをを介してきれいに印刷することをすべて一度に処理する単一のテンプレートが欲しいと思いoperator<<ます。疑似コードで、私はこのようなものを探しています: template<container C, class T, String delim = ", ", String open = "[", String close = "]"> std::ostream & operator<<(std::ostream & o, const C<T> & x) { o << open; // for (typename C::const_iterator i = x.begin(); i != x.end(); i++) /* Old-school */ for (auto i …


9
std :: promiseとは何ですか?
私はC ++ 11にかなり精通していますstd::thread、std::asyncとstd::futureの構成要素(例えば参照この回答)ストレートフォワードです。 でも、なんだかよくわからない std::promise、何をする、どのような状況で最適に使用されるは。標準のドキュメント自体には、クラスの概要以外の多くの情報は含まれていません。また、単に:: threadも含まれていません。 誰かstd::promiseが必要であり、それが最も慣用的な解決策である状況の簡潔で簡潔な例を誰かに教えてもらえますか?

10
クリスマスツリーを検出するには?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 昨年休業。 次の画像に表示されるクリスマスツリーを検出するアプリケーションを実装するために使用できる画像処理技術はどれですか。 これらすべての画像で機能するソリューションを探しています。したがって、ハールカスケード分類器またはテンプレートマッチングのトレーニングを必要とするアプローチは、それほど興味深いものではありません。 オープンソーステクノロジーのみを使用している限り、任意のプログラミング言語で記述できるものを探しています。ソリューションは、この質問で共有されている画像でテストする必要があります。あり6枚の入力画像は、その答えは、それらのそれぞれの処理結果を表示する必要があります。最後に、各出力画像には、検出されたツリーを囲むように赤い線が描画されている必要があります。 これらの画像に含まれる木をプログラムでどのように検出しますか?

16
参照とポインターを使用する場合
ポインタと参照の構文と一般的なセマンティクスを理解していますが、APIで参照またはポインタを使用することが適切かどうかをどのように判断すればよいですか? 当然、状況によってはどちらか一方が必要です(operator++参照引数が必要です)が、変数が破壊的に渡されていることは構文上明らかであるため、一般的にはポインタ(およびconstポインタ)を使用した方がよいと思います。 たとえば、次のコードで: void add_one(int& n) { n += 1; } void add_one(int* const n) { *n += 1; } int main() { int a = 0; add_one(a); // Not clear that a may be modified add_one(&a); // 'a' is clearly being passed destructively } ポインターを使用すると、何が起こっているのかが常に(さらに)明白になります。そのため、APIなどでは、明確さを重視する場合、ポインターは参照よりも適切ではありませんか?つまり、参照は必要な場合にのみ使用する必要があるということoperator++ですか(例:)?どちらか一方にパフォーマンスの問題はありますか? 編集(古い): NULL値を許可して生の配列を処理する以外に、選択は個人の好みに帰着するようです。GoogleのC ++スタイルガイドを参照する以下の回答を受け入れました。「値の構文はあるがポインタのセマンティクスがあるため、参照は混乱を招く可能性がある」という見解を示しているためです。 NULLであってはならないポインタ引数をサニタイズするために必要な追加の作業(たとえばadd_one(0)、実行時にポインタバージョンを呼び出して中断する)のため、オブジェクトが存在しなければならない参照を使用することは保守性の観点からは残念ですが、意味があります。構文の明確さを失う。
381 c++  pointers  reference 


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