Во время моей степени бакалавра в CS я часто сталкивался с использованием рекурсивных структур данных. В C++ я всегда в конечном итоге с помощью указателей, чтобы мои структуры данных рекурсивных, так же как и то, что я хотел бы сделать в С.Рекурсивные структуры данных без использования указателей
Упрощенный пример может быть следующим:
struct Tree{
int data;
struct Tree *left, *right;
};
Однако, используя указатели, как правило, рискованная работа и требует много часов отладки и тестирования кода. Для этих ресусов я хотел бы знать, есть ли другой эффективный способ определения рекурсивных структур данных в C++.
В других языках программирования, как ржавчина, я видел такие вещи, как, что:
struct Node {
children: Vec<Node>,
node_type: NodeType,
}
Есть более безопасный и комфортабельный способ определения таких рекурсивных структур в C++. Одна из возможностей - использовать std :: Vector, но я не знаю о производительности метода.
Вы можете сделать то же самое в C++, просто сделать дерево слева и справа, а не дерево. – Robinson
@ Robinson, и это немедленно прекратит приложение - из-за бесконечного создания объекта Tree :) – hauron
В некоторых случаях это на самом деле * преимущество * при использовании указателей, например, в древовидных структурах. Как вы иначе говорите, что у дерева нет детей? Нет никакого «нулевого» значения, которое может быть использовано для структур. –