-3

次の C++ スニペットを理解するために、C++ の「クラス」やその他の高度なテクニックを学び始めました。質問する前にオンラインで検索したので、ばかげていると思われる場合は、質問の評価を下げないでください。

このコードは、「GK メソッド」と呼ばれるオンライン分位数アルゴリズムを実装しています。コードを学習することで、アルゴリズムの実際のワークフローを理解しようとします。完全なコードには 191 行あるので、ここにはコピーしませんでした 。https ://github.com/coolwanglu/quantile-alg/blob/master/gk.h にあります。

私が理解していないコードの部分は以下のリストです:

46     class entry{ 
47     public: 
48         entry () { } 
49         entry (unsigned int _g, unsigned int _d) : g(_g), delta(_d) { } 
50         unsigned int g,delta; 
51     }; 

#48,49 の意味がわかりません。

134         entry & ecur = iter->second; 

ここで「タイプと名前」とはどういう意味ですか?

最後に、GK メソッドに精通している人がたまたまこれを見た場合: このメソッドの実際の実装を説明したり、参考文献を提案したりできますか? ありがとう。

4

1 に答える 1

1
  • 48 行目はデフォルトのコンストラクターです。entryこれは、 type の変数を宣言し、初期化パラメーターを指定しない場合に呼び出されるコードです。
  • 行 49 は別のコンストラクターです。これは、 type の変数を宣言し、2 つのパラメーターentryを渡すときに呼び出されるコードです。unsigned int
  • 134 行目は typeの参照entryの宣言です。アンパサンドは、それecurが のコピーではiter->secondなく、それへの参照であることを示します。への変更は、同じ変数を参照するため、ecurに反映されます。iter->second

コンストラクターの詳細については、こちらをご覧ください。これは参照変数に関するチュートリアルです

于 2014-09-20T01:12:50.353 に答える