C++中的嵌套/递归类

Nested/Recursive class in C++

本文关键字:递归 嵌套 C++      更新时间:2023-10-16

我目前正在编写一种涉及递归类的算法。在 Matlab 中,我可以将结构放入结构中,但我想知道我是否可以在C++中做同样的事情。

例如,我有一个方阵,可以分为 4 个较小的矩阵。每个小矩阵将再次分解为4个较小的矩阵。矩阵将被分割,直到它具有预定义的大小。结果,我可以在分层树下表示矩阵。

换句话说,我可以说每个矩阵都有自己的子矩阵和属性。你能指导我一种有效的方法来编程这种问题吗?由于速度对算法非常重要,我仍在寻找一种最快的方法来实现算法。

提前谢谢。

亲切问候

您可以使用指针。或容器。

struct Matrix
{
  // some members
  Matrix* child; //version 1
  std::vector<Matrix> Children; //version 2
}

它可以很容易地在 C 中使用指针在 C 和C++中完成:

struct some_struct
{
    int    some_field;
    double some_other_field;
    struct some_struct *some_pointer_to_struct;
};

在C++中,如果您想要多个容器,则可以使用普通的标准容器:

struct some_struct
{
    int    some_field;
    double some_other_field;
    std::vector<some_struct*> collection_of_struct_pointers;
};

这里重要的是你必须使用指针,因为直接使用结构本身(如struct some_struct foo;(在结构完全定义之前不起作用,并且在右大括号之前它才完全定义。