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

How do we create N matrices simultaneously in C++?

本文关键字:创建 C++ 我们      更新时间:2023-10-16

我想同时创建N(n,k)矩阵。

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

http://www.dummies.com/how-to/content/how-to-create-an-array-in-r.html("请参阅"在R中使用创建者函数"段落)

请帮助我,我知道对于你们中的一些人来说,这个问题很愚蠢,但我是这种语言的新手,我没有其他人要问。

让我们先解释一下关于多维数组的一些信息。 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; 
        }
    }
}