解释一段c++代码

Explain a snippet of c++ codes

本文关键字:一段 c++ 代码 解释      更新时间:2023-10-16

为了理解下面的C++片段,我刚刚开始学习C++中的"class"和其他高级技术。如果你认为这个问题很傻,请不要低估它,因为我在问这个问题之前已经在网上搜索过了!

该代码实现了一个名为"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方法的人碰巧看到这样的情况:你能向我解释一下吗,或者建议一些参考资料来解释这个方法的实际实现。谢谢

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

你可以在这里阅读更多关于构造函数的信息。以下是关于引用变量的教程。