0

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

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

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

预先感谢。

亲切的问候,

4

2 回答 2

1

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

struct Matrix
{
  // some members
  Matrix* child; //version 1
  std::vector<Matrix> Children; //version 2
}
于 2013-10-09T08:49:01.780 回答
0

它可以使用指针在 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;)在结构完全定义之前不起作用,并且在右大括号之前它没有完全定义。

于 2013-10-09T08:48:48.077 回答