解释一段c ++代码

时间:2014-09-20 01:00:42

标签: c++ quantile

我刚刚开始在C ++中学习“class”和其他高级技术,以便了解以下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; 

“Type& Name”是什么意思?

最后,如果任何熟悉GK方法的人碰巧看到这个:你能解释一下,或者建议任何解释这种方法实际实施的参考文献。感谢。

1 个答案:

答案 0 :(得分:1)

  • 第48行是默认构造函数。这是在声明类型为entry的变量时调用的代码,并且未指定初始化参数。
  • 第49行是另一个构造函数。这是在声明类型为entry的变量并传递两个unsigned int参数时调用的代码。
  • 第134行是类型为entry引用的声明。 &符号表示ecur不是iter->second的副本,而是对它的引用。对ecur的任何更改都会反映在iter->second中,因为它们引用相同的变量。

您可以阅读有关构造函数here的更多信息。 这是a tutorial on reference variables