【发布时间】:2016-03-02 13:19:10
【问题描述】:
在我的 main 中,我调用函数 compute_entropy 并给它一个像这样的向量: 浮点熵 = h.compute_entropy(input_pic[0], & Symbol_table);
在实现函数本身(在 h.cpp 中)时,我不应该更改它所采用的参数 vector* prob.. 如何访问 prob 的数据?
float compute_entropy(vector<Symbol>* prob)
{
float ent = 0;
vector<Symbol>* prob;
for (int i = 0; i < prob.size(); i++) //GIVES ERROR
{
ent += (prob.at(i).freq) * log2( 1 / (prob.at(i).freq) );
}
}
【问题讨论】:
-
@MohitJain 是的,但 prob.at() 和 prob.size() 给出错误,因为 prob 的声明是指向向量而不是向量本身的指针
-
为什么在本地声明
prob。它已经是函数的参数。理想情况下,您应该使用float compute_entropy(const vector<Symbol> &prob) -
@MohitJain 在 main 中调用函数时..如何传递参数? compute_entropy(& Symbol_table) ??
-
放弃
&,直接拨打compute_entropy(Symbol_table);。更多信息请查看this link。 -
由于函数的实现需要参数(指向向量的指针),我不能直接用向量的参数调用它..它给出了一个错误@MohitJain
标签: c++ pointers pass-by-reference pass-by-value