0

クラス A を要素として使用して 3 次元配列を作成する必要があります。クラス A は以下のように定義されていvector<vector<vector<A> > >ますboost::multi_array。どちらの方がよいですか?

struct C
{
    int C_1;
    short C_2;
};

class B
{
public:
    bool B_1;
    vector<C> C_;
};

class A
{
public:
    bool A_1;
    B B_[6];
};
4

2 に答える 2

0

その時点で 3 つの次元すべてのサイズがわかっている場合、コードを記述している場合、および配列の境界をチェックする必要がない場合は、従来の配列を使用してください。

const int N1 = ...
const int N2 = ...
const int N3 = ...
A a[N1][N2][N3]

配列の次元が実行時にのみ決定できるが、プログラムの初期化後は一定のままであり、配列の使用が均一に分散されている場合は、boost::multi_array が最適です。ただし、実行時に多くの動的拡張が行われている場合、および/または配列サイズが均一でない場合 (たとえば、A[0][0][0...99] が必要で、A[2][ のみが必要な場合) 3][0...3]) の場合、ネストされたベクトルが最適なソリューションである可能性があります。不均一なサイズの場合、サイズが最も変化する寸法を最後の寸法として入れます。また、ネストされたベクトル ソリューションでは、最初に小さい次元を配置することをお勧めします。

于 2013-08-11T11:10:27.980 に答える