首先,我想说我是C ++中的新手。
作为我的硕士论文的一部分,我正在用C ++编写一个程序,它还将变量m
和d
(两个整数)作为参数。如果d
是2的幂(这意味着2^d
元素)。参数m
定义一个元素与总组(2^d
元素)之间可能的交互次数。
可能的交互次数计算如下:
\kappa = \sum_{i=0}^m\binom{d}{i}
(目前我为2^d
x \ kappa生成矢量矢量,但我的教授希望我为不同的m
创建不同的统计数据。我的第一个是生成一个不同大小的m
数组的动态数组...然后我定义了一个具有最大需要的2d数组的3-dim数组,但程序速度也很重要(例如d = 20
)。
我想请教您如何定义这种类型的动态数组,这也很快。
此致
答案 0 :(得分:0)
使用boost多维数组
http://www.boost.org/doc/libs/1_41_0/libs/multi_array/doc/index.html
例如看看这段代码。这很容易
#include "boost/multi_array.hpp"
#include <cassert>
int main () {
// Create a 3D array that is 3 x 4 x 2
typedef boost::multi_array<double, 3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
// Assign values to the elements
int values = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
A[i][j][k] = values++;
// Verify values
int verify = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
assert(A[i][j][k] == verify++);
return 0;
}