我们如何在C ++中同时创建N个矩阵?

时间:2014-02-27 17:58:57

标签: c++

我想同时创建维度N的{​​{1}}矩阵。

我在Matlab中有一个代码,我正在尝试将其转换为C.让我说我想同时构造2个矩阵,在R语言中如下:

http://www.dummies.com/how-to/content/how-to-create-an-array-in-r.html(“请参阅段落”使用R中的创作者功能“)

请帮助我,我知道对于你们中的一些人来说,这个问题很愚蠢,但我对这种语言不熟悉,我没有其他人可以问。

1 个答案:

答案 0 :(得分:0)

让我们首先解释一下多维数组。 a[n][k]是n个数组,每个数组长k个元素。因此,a[n][k][N]将创建n个a[k][N]类型的数组。您需要做的就是定义数组(例如:int a[2][3][4])。

如果在编译时不知道数组的大小,请使用动态分配和指针。代码是这样的:

int*** pppA = new int**[n];
for (int i = 0; i < n; i++)
{
    pppA[i] = new int*[k];
    for (int j = 0; j < k; j++)
    {
        pppA[i][j] = new int[N];
    }
}

不要忘记删除已完成使用的内存。

我不知道R,但如果我理解了注释中链接的示例,那么您正在寻找的是(如果您知道编译时的维度):

int a[3][4][2];

这将创建一个整数数组,没有初始化值。如果要初始化它,您有两个选择 - 编写循环或使用初始化程序。

初​​始化:

int a[2][4][3] = {{{1,2,3},{4,5,6},{7,8,9},{10,11,12}},{{13,14,15},{16,17,18},{19,20,21},{22,23,24}}};
//print the array
for (int i =0; i < 2; i ++)
{
    for (int j = 0; j < 4; j++)
    {
        for (int k = 0; k < 3; k++)
        {
            cout << a[i][j][k] << ','; 
        }
        cout << endl;
    }
    cout << "---------------------" << endl;
}

循环:

int a[2][4][3];
for (int i =0; i < 2; i ++)
{
    for (int j = 0; j < 4; j++)
    {
        for (int k = 0; k < 3; k++)
        {
            a[i][j][k] = 12 * i + 4*j + k; 
        }
    }
}