我刚刚开始在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方法的人碰巧看到这个:你能解释一下,或者建议任何解释这种方法实际实施的参考文献。感谢。
答案 0 :(得分:1)
entry
的变量时调用的代码,并且未指定初始化参数。entry
的变量并传递两个unsigned int
参数时调用的代码。entry
的引用的声明。 &符号表示ecur
不是iter->second
的副本,而是对它的引用。对ecur
的任何更改都会反映在iter->second
中,因为它们引用相同的变量。您可以阅读有关构造函数here的更多信息。 这是a tutorial on reference variables。