Вложенный / Рекурсивный класс в C ++

0

В настоящее время я кодирую алгоритм, включающий рекурсивный класс. В Matlab я могу поместить структуру внутри структуры, но мне интересно, могу ли я сделать то же самое в C++.

Например, у меня квадратная матрица, которую можно разделить на 4-младшие матрицы. И каждая малая матрица снова будет разложена на 4 меньших. Матрица будет разделена до тех пор, пока она не будет иметь заданный размер. В результате я могу представить матрицу под иерархическим деревом.

Для слов могу сказать, что каждая матрица имеет свои собственные дети и свойства. Можете ли вы дать мне эффективный способ программирования такого рода проблем. Поскольку скорость очень важна для алгоритма, я все еще ищу самый быстрый способ реализовать алгоритм.

Заранее спасибо.

С уважением,

Теги:

2 ответа

1

Вы можете использовать указатели. Или контейнеры.

struct Matrix
{
  // some members
  Matrix* child; //version 1
  std::vector<Matrix> Children; //version 2
}
  • 0
    Я весьма признателен. Это очень помогает !!!
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;) не работает до тех пор, пока структура не будет полностью определена и не будет полностью определена до закрытия фигурной скобки.

  • 0
    Большое спасибо за ваши советы!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню