c++ - 具有自己成员的成员 Vector 的类

标签 c++ class pointers vector smart-pointers

我正在尝试编写一个神经网络。我以前用其他语言做过,并使用矩阵库;但是,我想自己制作,以便更好地理解它们。但是我的类(class)遇到了问题。

我正在用 C++ 执行此操作。

我有一个名为 ANN 的类(class)。它有一个层 vector 。 层是一个名为 Node 的类。 然而,在节点内我想访问上一层节点,所以我可以计算这个节点的值。

我知道如果我有一个类,我希望它的一个成员是它自己,它必须是一个指针。 例如。

class Node{
public:
    // Public methods/members here
private:
    Node *previousNode;
}

然而,这不是我想要的。 我希望 *previousNode 成为节点的祖先

这是我想要的例子

class Node{
public:
    //Public functions/members here
private:
    vector <Node*> previousLayer;
}

现在我听说在这种情况下使用智能指针会更好。我不完全知道那是什么,我知道它基本上是管理它们的指针的包装器。我还认为使用智能指针的主要原因是因为一些指针在使用后保留为 NULL 或未删除,但我认为这并不重要,因为此类的范围只能在程序结束时结束。

我的问题是如何实现指向 vector 所在类的指针 vector 。

最佳答案

如果我正确地解释了你的问题,听起来你希望 Node 的每个实例都包含指向它所连接的其他 Node 对象的指针列表.

你写的很好,但正如你所说,使用 std::shared_ptr 可以使代码更安全。

class Node{
 public:
     //Public functions/members here
 private:
     vector <shared_ptr<Node>> previousLayer;
 }

您应该使用 std::make_shared 分配您的节点,只要它们被使用,它们就会一直存在于内存中(不需要 newdelete 。)

关于c++ - 具有自己成员的成员 Vector 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239782/

相关文章:

c++ - Qt5 C++ 如何访问模型中的项目以检查状态?

c++ - 在简单的 vector 实现中优化运行时间

java - 在Java中实例化父类(super class)变量

c++ - C++ 模板故障排除简介

c++ - 在 C++ 中重载 -> 运算符以返回自定义对象

c++ - 为什么 const 引用可以指向常量而普通引用不能

c++ - 在 Windows 7 中使用 windows.h 在 C++ 中更改文件创建日期

Java AOT + 动态加载java类

c++ - 指针和数组作为参数有什么区别?

c++ - 如何从 C++ 中的函数返回复杂数据类型?