我目前正在编写一个涉及递归类的算法。在 Matlab 中,我可以将一个结构放入一个结构中,但我想知道我是否可以在 C++ 中做同样的事情。
例如,我有一个方阵,可以分成 4 个更小的矩阵。每个小矩阵将再次分解为 4 个更小的矩阵。矩阵将被分割,直到它具有预定义的大小。结果,我可以在层次树下表示一个矩阵。
换句话说,我可以说每个矩阵都有自己的孩子和属性。你能指导我一种有效的方法来解决这类问题吗?由于速度对算法非常重要,所以我仍在寻找一种最快的方法来实现算法。
预先感谢。
亲切的问候,
您可以使用指针。或容器。
struct Matrix
{
// some members
Matrix* child; //version 1
std::vector<Matrix> Children; //version 2
}
它可以使用指针在 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;
)在结构完全定义之前不起作用,并且在右大括号之前它没有完全定义。