0

現在、再帰クラスを含むアルゴリズムをコーディングしています。Matlabでは構造体の中に構造体を入れることができますが、C++でも同じことができるのだろうか。

たとえば、4 つの小さな行列に分割できる正方行列があります。そして、それぞれの小さな行列は再び 4 つの小さな行列に分解されます。マトリックスは、事前に定義されたサイズになるまで分割されます。その結果、階層ツリーの下に行列を表すことができます。

つまり、各マトリックスには独自の子とプロパティがあると言えます。この種の問題を効率的にプログラミングする方法を教えてください。アルゴリズムにとって速度は非常に重要であるため、アルゴリズムを実装する最速の方法を探しています。

少し早いですがお礼を。

敬具、

4

2 に答える 2

1

ポインターを使用できます。またはコンテナ。

struct Matrix
{
  // some members
  Matrix* child; //version 1
  std::vector<Matrix> Children; //version 2
}
于 2013-10-09T08:49:01.780 に答える
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;) ことは、構造体が完全に定義されるまで機能せず、右中括弧まで完全に定義されないためです。

于 2013-10-09T08:48:48.077 に答える