如何在我的班级中初始化向量<type*>?

问题描述 投票:0回答:1

为什么它有 1000 个元素?

class node 
{
  public:
    std::vector<node*> symbs;
    int count = 0;

    node() : count(0), symbs(26, nullptr) {}

};
int main()
{
    node *trees;
}

我可以使用

node *trees = new node;
,没关系,但我不想要干净的内存。我怎样才能以不同的方式做到这一点?

c++ class vector
1个回答
0
投票

为什么它有 1000 个元素?

您有未初始化的指针,您可以使用它来访问一些随机内存并获得垃圾结果,即未定义的行为。

我可以使用节点 *trees = 新节点;没关系,但我不想要干净的记忆。我怎样才能以不同的方式做到这一点?

您可以只创建对象,而不是指向它的指针:

int main()
{
    node trees;
}

对于你的向量,如果你的

node
对象拥有该子节点,它应该包含
std::unique_pointer<node>
std::shared_pointer<node>
的向量,具体取决于所有权。注意 - 所有权意味着 2 个节点不应该互相拥有,否则你将得到循环引用和内存泄漏。使用智能指针,您不必创建和实现析构函数以及复制/移动构造函数等。

© www.soinside.com 2019 - 2024. All rights reserved.