В настоящее время я кодирую алгоритм, включающий рекурсивный класс. В 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;
) не работает до тех пор, пока структура не будет полностью определена и не будет полностью определена до закрытия фигурной скобки.