CSの私の学士時代に、私は再帰的なデータ構造の使用を何度も経験しました。 C++では、私は常にちょうど私がC.ポインタを使用しない再帰的なデータ構造
に単純化した例をどうなるのかのように、次のことができ、私のデータ構造の再帰的にするために、ポインタを使用して終了:
struct Tree{
int data;
struct Tree *left, *right;
};
しかし、ポインタを使用する傾向にあります危険な仕事であり、コードのデバッグとテストに多くの時間がかかります。これらの再帰については、C++で再帰的なデータ構造を定義する他の効率的な方法があるかどうかを知りたいと思います。他のプログラミング言語で
は、錆のように、私はそのようなことを見てきました:
struct Node {
children: Vec<Node>,
node_type: NodeType,
}
は、C++でこのような再帰的な構造を定義するより安全かつ快適な方法があります。 1つの可能性は、std :: Vectorを使用することですが、私はメソッドのパフォーマンスを認識していません。
C++でも同じことができますが、* Treeではなく左右のTreeを作成するだけです。 – Robinson
@Robinsonそれはすぐにアプリケーションを終了させるでしょう - 無限のツリーオブジェクトの作成のために:) – hauron
場合によっては、例えば木のような構造のようなポインタを使用することで実際には利点*です。そうでなければ、木に子どもがいないことをどのように伝えますか?構造体に使用できる「null」値はありません。 –