【问题标题】:can anybody help me get rid of this memset?有人可以帮我摆脱这个 memset 吗?
【发布时间】:2019-04-08 22:09:48
【问题描述】:

这里是 Node 类,最后一行已经使用了 memset,所以我不想 无论如何都要使用它,有人可以帮助我吗?

class Node  { 
    public: 
    int key; 
    Node **front; 
    Node(int, int); 
    }; 

    Node::Node(int key, int level) 
    { 
    this->key = key; 
    front = new Node*[level+1]; 

    // here is memset i wanna remove *******
    memset(front, 0, sizeof(Node*)*(level+1)); 
};

【问题讨论】:

  • 将front = new Node*[level+1];更改为front = new Node*[level+1]{};
  • 或者使用std::vector而不是new[](无论如何你都应该这样做!),然后你可以在(重新)调整矢量大小时为新元素提供默认值
  • @RemyLebeau 他是将 Node 的向量存储在 Node 内,还是将 Node* 的向量存储在 Node 内?这看起来像是链表实现的一部分。
  • 或std::fill(front, front+level+1, nullptr);
  • @Tzalumen 这看起来像一棵树。

标签: c++ memset


【解决方案1】:

我只是想要一个简单的循环替换

for(size_t i = 0; i < level+1; i++)
{
    front[i]=NULL;
}

我可以改用上面的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多