2016-06-30 8 views
0

私はいくつかのVBAコードをC++に変換する必要がありますが、問題はアルゴリズムが非常に特殊で、最大15次元の行列を使用しているため、boost_arrayを使用することにしました。 私の問題は、VBAではランタイム時にディメンションを変更することができ、私はboostマルチアレイでもそれを行うことができるのだろうかと思います。ブーストmulti_arrayライブラリ

歓声

+0

実行時に次元数を変更することはできますが、数値は変更することはできません。 – Holt

答えて

0

実行時に各次元の程度(大きさ)を変更することができるではなく、変数の次元数:

typedef boost::multi_array<double, 3> array_type; 

// Create a 2x4x5 array 
array_type array3(boost::extents[2][4][5]); 

// Reshape (no copy) - The total number of elements must remain the same 
boost::array<array_type::index, 3> new_dims{{5, 4, 2}}; 
array3.reshape(new_dims); 

// Resize, keeping currently stored elements by copying them 
array3.resize(boost::extents[8][10][5]); 

// Create a new array 
array3 = array_type(boost::extents[7][6][8]); 

次元数以来は、テンプレートのパラメータでありますboost::multi_arrayでは、実行時に変更することはできません。

関連する問題