1

古い C スタイルの静的配列は、引数として渡されるとき、または値として返されるときに、非常に煩雑になる可能性があります。そのためには、新しい std::array が非常に便利です。

ただし、マルチ配列の場合、std:: には何もなく、boost::multi_array は静的に割り当てられるだけではありません。

もちろん、次のように言うこともできます。

std::array<std::array<int,3>,2> my_array;

しかし、私は少し長いと感じ、逆の組み込み宣言に対応しています

int my_array[2][3];

そのような概念(二次元または任意の次元)をコーディングする「ライブラリ」がすでに存在するかどうか疑問に思っています

(後者の場合、私が正しければ、入力には可変個のテンプレートを使用する必要があります。

multi_array<int,3,4> A;
multi_array<int,3,5,8> B;
multi_array<int,4,7,8,9,8,3> C; //this one being quite rare though

)

編集:最初の投稿について申し訳ありません、私はテストしませんでした

4

1 に答える 1

0

あなたのアプリケーションにとってはやり過ぎかもしれませんが、私はEigenライブラリを使用しており、Matrix テンプレート クラスのファミリーがあなたのために働くかもしれないと考えています。例:

Eigen::Matrix<float, 3, 2> a;
a(1,0) = 1.1;
a(0,1) = 17.5;

編集 1:おっと、N 次元行列をサポートしているかどうかはわかりません。しかし、2 次元のものについては、それが良いことを知っています。

std::arrayタイプを読みやすくするために、Eigen または のいずれかで typedef を使用できると思います。

于 2012-09-08T17:36:07.920 に答える