指针并通过引用传递c ++

马拉姆

在我的主程序中,我调用了函数compute_entropy,并给了它一个像这样的向量:float 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)  );
    }
}
莫希特·贾恩(Mohit Jain)

因为类型probVector<Symbol> *,所以实际上您实际上需要在访问成员之前先解除引用。看起来像(*prob).at(i).freq

*(A).B也可以写成A->B,因此(*prob).at(i).freq可以写prob->at(i).freq(具有类似的论点prob.size()成为prob->size()

以更简洁的方式进行操作
因为您从不更改向量的内容,所以可以使参数恒定。

float compute_entropy(const vector<Symbol>* prob)

现在我们知道指针是邪恶的,让我们用引用替换指针

float compute_entropy(const vector<Symbol> &prob)
{

    float ent = 0;

    for (int i = 0; i < prob.size(); i++)  //GIVES ERROR
    {
        ent +=    (prob.at(i).freq)   *   log2(  1 / (prob.at(i).freq)  );
    }
}

调用此&函数时,如果要使用vector调用,请从参数中删除the ;如果要使用vector指针调用,请使用取消引用*

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过引用在C中传递指针

来自分类Dev

通过引用传递指针

来自分类Dev

C ++通过const指针或对const指针的引用传递

来自分类Dev

通过常量引用传递指针

来自分类Dev

通过引用或指针传递矢量

来自分类Dev

双指针vs通过引用指针传递

来自分类Dev

在C中通过引用将指针传递给struct

来自分类Dev

c如何通过引用传递指针并增加值

来自分类Dev

是否可以强制通过引用或指针(C++)传递类?

来自分类Dev

在C ++中,通过指针传递比通过引用传递有好处吗?

来自分类Dev

在C函数中通过指针传递结构数组以更新指针引用

来自分类Dev

更改通过引用传递的指针的值

来自分类Dev

通过引用将指针传递给函数

来自分类Dev

通过引用传递字符指针数组的混淆

来自分类Dev

通过引用传递时的指针转换

来自分类Dev

通过引用传递指针会使程序崩溃

来自分类Dev

指针参数是否需要通过引用传递

来自分类Dev

通过引用传递指针时出错

来自分类Dev

通过引用传递动态变量的指针

来自分类Dev

通过引用或指针正确传递向量

来自分类Dev

无法通过引用传递从函数返回的指针

来自分类Dev

通过引用传递解引用的指针时了解C ++堆/堆栈分配

来自分类Java

在Java中通过引用传递和在C中传递指针之间有什么区别?

来自分类Dev

通过函数c传递指针

来自分类Dev

用于通过常量引用和原始指针传递向量的 C++ 模板

来自分类Dev

使用Boost.Python通过引用/指针将C ++对象传递给Python解释器

来自分类Dev

通过引用传递的指针对C ++中的getadrinfo有效

来自分类Dev

C ++通过引用函数传递

来自分类Dev

C-通过引用传递?