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

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



17
テンプレートをヘッダーファイルにのみ実装できるのはなぜですか?
C ++標準ライブラリからの引用:チュートリアルとハンドブック: 現在、テンプレートを使用する唯一の移植可能な方法は、インライン関数を使用してヘッダーファイルにテンプレートを実装することです。 どうしてこれなの? (明確化:ヘッダーファイルは唯一のポータブルソリューションではありませんが、最も便利なポータブルソリューションです。)
1778 c++  templates  c++-faq 

12
移動セマンティクスとは何ですか?
C ++ 0xに関するScott Meyersとのソフトウェアエンジニアリングのラジオポッドキャストインタビューを聞いたところです。新機能のほとんどは私にとって理にかなっており、1つを除いて、実際にC ++ 0xに興奮しています。私はまだ移動セマンティクスを取得しません...それは正確には何ですか?

24
画像処理:「コカ・コーラ缶」認識のためのアルゴリズムの改善
私が過去数年間取り組んだ最も興味深いプロジェクトの1つは、画像処理に関するプロジェクトでした。目標は、コカコーラの「缶」を認識できるシステムを開発することでした(「缶」という言葉を強調していることに注意してください。その理由はすぐにわかります)。下のサンプルを見ることができます。缶はスケールと回転で緑色の長方形で認識されます。 プロジェクトに関するいくつかの制約: 背景は非常に騒々しいかもしれません。 缶は、任意の可能性があり、スケールまたは回転(合理的な範囲内で)、あるいは配向を。 画像にある程度のぼやけがある可能性があります(輪郭が完全にまっすぐではない場合があります)。 画像にコカコーラのボトルが含まれている可能性があり、アルゴリズムは缶を検出するだけです! 画像の明るさは大きく異なる可能性があります(そのため、色の検出に「過度に」依存することはできません)。 缶は、部分的側面または途中に隠された、おそらく一部は瓶の後ろに隠れてすることができます。 画像にはまったく缶がありません。その場合、何も見つからず、そのことを伝えるメッセージを書く必要がありました。 したがって、次のようなトリッキーなものになる可能性があります(この場合、アルゴリズムが完全に失敗しました)。 私はこのプロジェクトを少し前にやっていましたが、それを行うのはとても面白かったし、適切な実装がありました。ここに私の実装に関するいくつかの詳細があります: 言語:OpenCVライブラリを使用してC ++で実行。 前処理:画像の前処理、つまり画像をより生の形式に変換してアルゴリズムに提供するために、2つの方法を使用しました。 カラードメインをRGBからHSVに変更し、「赤」の色相に基づいてフィルタリングし、特定のしきい値を超える彩度でオレンジ色のような色を避け、低い値でフィルタリングして暗い色調を避けます。最終結果は、白黒のバイナリ画像で、すべての白いピクセルがこのしきい値に一致するピクセルを表します。明らかに画像にはまだがらくたがたくさんありますが、これにより、操作する必要がある次元の数が減ります。 ノイズを減らすために、メディアンフィルタリング(すべての近傍のピクセル値の中央値を取り、この値でピクセルを置き換える)を使用したノイズフィルタリング。 キャニーエッジ検出フィルターを使用して、前の2つの手順の後にすべてのアイテムの輪郭を取得します。 アルゴリズム:このタスクで選択したアルゴリズム自体は、特徴抽出に関するこの素晴らしい本から引用され、一般化ハフ変換(通常のハフ変換とはかなり異なります)と呼ばれています。それは基本的にいくつかのことを言います: 分析方程式(ここではその場合)を知らなくても、空間内のオブジェクトを記述できます。 スケーリング係数と回転係数のすべての組み合わせについて画像を基本的にテストするため、スケーリングや回転などの画像変形に耐性があります。 アルゴリズムが「学習」する基本モデル(テンプレート)を使用します。 輪郭画像に残っている各ピクセルは、モデルから学んだことに基づいて、オブジェクトの(重力に関して)中心となる別のピクセルに投票します。 最後に、投票のヒートマップが作成されます。たとえば、ここでは、缶の輪郭のすべてのピクセルがその重心に投票するので、同じピクセルに対応する多数の投票が中央にあり、ヒートマップに次のようなピークが表示されます。 それができたら、単純なしきい値ベースのヒューリスティックが中心ピクセルの位置を提供し、そこからスケールと回転を導き出し、その周りに小さな長方形をプロットできます(最終的なスケールと回転係数は明らかに、元のテンプレート)。理論的には少なくとも... 結果:現在、このアプローチは基本的なケースでは機能しましたが、一部の領域では非常に不十分でした。 それは非常に遅いです!私はこれを十分に強調していません。一部の缶が非常に小さかったため、回転と平行移動のスケーリング係数が非常に高かったため、30枚のテスト画像の処理にはほぼ1日が必要でした。 ボトルが画像内にあると完全に失われ、何らかの理由でほとんどの場合、缶の代わりにボトルが見つかりました(おそらく、ボトルが大きく、ピクセルが多く、投票数が多かったためです)。 投票は中央付近のランダムな場所のピクセルで行われ、非常にノイズの多いヒートマップで終わったため、あいまいな画像も良くありませんでした。 平行移動と回転の不変が達成されましたが、向きは達成されませんでした。つまり、カメラの対物レンズに直接面していない缶は認識されませんでした。 上記の4つの特定の問題を解決するために、OpenCV機能のみを使用して、特定のアルゴリズムを改善するのを手伝っていただけますか? 何かを学んでくれる人もいるといいのですが、結局、質問をする人だけが学ぶべきではないと思います。:)


21
オブジェクト自体ではなくポインタを使用する必要があるのはなぜですか?
私はJavaの出身で、C ++でオブジェクトの操作を開始しました。しかし、私に起こったことの1つは、人々はしばしばオブジェクト自体ではなくオブジェクトへのポインタを使用することです。たとえば、次の宣言: Object *myObject = new Object; のではなく: Object myObject; または、関数を使用する代わりにtestFunc()、次のようにしましょう: myObject.testFunc(); 私たちは書く必要があります: myObject->testFunc(); しかし、なぜこのようにする必要があるのか​​理解できません。メモリアドレスに直接アクセスできるので、効率と速度に関係していると思います。私は正しいですか?
1602 c++  c++11  pointers  c++-faq 

18
家系図ソフトウェアのサイクル
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私はいくつかの家系図ソフトウェア(C ++とQtで書かれた)の開発者です。私の顧客の1人がバグレポートを私にメールするまで問題はありませんでした。問題は、顧客には自分の娘を持つ2人の子供がいて、その結果、エラーのために彼が私のソフトウェアを使用できないことです。 これらのエラーは、処理されているファミリーグラフに関するさまざまなアサーションと不変条件の結果です(たとえば、サイクルを歩いた後、プログラムはXがYの父と祖父の両方になることはできないと述べています)。 すべてのデータアサーションを削除せずにこれらのエラーを解決するにはどうすればよいですか?

14
<は<=より速いですか?
であるif( a &lt; 901 )よりも速くif( a &lt;= 900 )。 この単純な例とまったく同じではありませんが、ループの複雑なコードではパフォーマンスにわずかな変更があります。これが真実である場合に備えて、これは生成されたマシンコードで何かをしなければならないと思います。

27
C ++でintを文字列に変換する最も簡単な方法
C ++ intから同等のものstringに変換する最も簡単な方法は何ですか。私は2つの方法を知っています。もっと簡単な方法はありますか? (1) int a = 10; char *intStr = itoa(a); string str = string(intStr); (2) int a = 10; stringstream ss; ss &lt;&lt; a; string str = ss.str();
1574 c++  string  int  type-conversion 


30
未定義の参照/未解決の外部シンボルエラーとは何ですか?どのように修正しますか?
OverаэтотвопросестьответынаStack Overflowнарусском:Ссылкананеразрешенныйвнешнийсимвол(возможниныепререв) 未定義の参照/未解決の外部シンボルエラーとは何ですか?一般的な原因は何ですか?それらを修正/防止する方法は? 自由に編集/追加してください。



23
高放射性環境で使用するためのアプリケーションのコンパイル
私たちは、電離放射線の衝撃を受けた環境のシールドされたデバイスに導入された組み込みC / C ++アプリケーションをコンパイルしています。ARM向けにGCCとクロスコンパイルを使用しています。デプロイすると、アプリケーションが誤ったデータを生成し、予想よりも頻繁にクラッシュします。ハードウェアはこの環境用に設計されており、アプリケーションはこのプラットフォームで数年間実行されています。 コードに加えることができる変更、または単一イベントの混乱によって引き起こされるソフトエラーとメモリ破損を特定/修正するために実行できるコンパイル時の改善はありますか?他の開発者は、長期実行アプリケーションでのソフトエラーの悪影響を軽減することに成功しましたか?
1456 c++  c  gcc  embedded  fault-tolerance 

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