C++;数组列表还是向量? 我试图用C++编写的代码改写为.< /p>

C++;数组列表还是向量? 我试图用C++编写的代码改写为.< /p>,c++,arrays,list,C++,Arrays,List,我在matlab中有一个长单元,包含256个项,其中每个项都是2x2矩阵。在matlab中,我这样写的 xA = cell(1,256); xA{1}=[0 0;3 1]; xA{2}=[0 0;13 1]; xA{3}=[0 0;3 2]; 等等 在C++中最容易使用的是什么? 我是否可以一次给出一个维数为[256][2][2]的数组,该数组中的所有4个值都是相同的,还是必须为数组中的每个特定值写一行 /Buxley先生你当然可以一次将它们全部初始化,尽管这听起来像是一大堆乏味的打字: fl

我在matlab中有一个长单元,包含256个项,其中每个项都是2x2矩阵。在matlab中,我这样写的

xA = cell(1,256);
xA{1}=[0 0;3 1];
xA{2}=[0 0;13 1];
xA{3}=[0 0;3 2];
等等

<>在C++中最容易使用的是什么?

我是否可以一次给出一个维数为[256][2][2]的数组,该数组中的所有4个值都是相同的,还是必须为数组中的每个特定值写一行


/Buxley先生

你当然可以一次将它们全部初始化,尽管这听起来像是一大堆乏味的打字:

float terms[256][4] = {
 { 0, 0, 3, 1 },
 { 0, 0, 13, 1 },
 { 0, 0, 3, 2}
 ...
 };
为了简单起见,我将其简化为256个4元素数组。如果您想真正表达预期的嵌套(当然这很好),您需要执行以下操作:

float terms[256][2][2] = {
     { { 0, 0 }, { 3, 1 } },
     { { 0, 0 }, { 13, 1 } },
     { { 0, 0 }, { 3, 2 }}
     ...
     };
这将是256行,每行都有一个由两个浮动“列表”组成的“列表”。每个列表都需要大括号。但是,由于C++支持在这样的事情中抑制括号,所以你也可以这样做:

float terms[256][2][2] = {
     { 0, 0, 3, 1 },
     { 0, 0, 13, 1 },
     { 0, 0, 3, 2}
     ...
     };
事实上,您甚至可以删除每行上的大括号,它们也是可选的。不过,我认为依靠压抑稍微有些阴暗。


如果您想使用比
float
嵌套数组(例如
矩阵
类型或其他类型)更高级别的类型,初始化可能会变得很棘手。

您当然可以一次将它们全部初始化,尽管这听起来像是很多繁琐的键入:

float terms[256][4] = {
 { 0, 0, 3, 1 },
 { 0, 0, 13, 1 },
 { 0, 0, 3, 2}
 ...
 };
为了简单起见,我将其简化为256个4元素数组。如果您想真正表达预期的嵌套(当然这很好),您需要执行以下操作:

float terms[256][2][2] = {
     { { 0, 0 }, { 3, 1 } },
     { { 0, 0 }, { 13, 1 } },
     { { 0, 0 }, { 3, 2 }}
     ...
     };
这将是256行,每行都有一个由两个浮动“列表”组成的“列表”。每个列表都需要大括号。但是,由于C++支持在这样的事情中抑制括号,所以你也可以这样做:

float terms[256][2][2] = {
     { 0, 0, 3, 1 },
     { 0, 0, 13, 1 },
     { 0, 0, 3, 2}
     ...
     };
事实上,您甚至可以删除每行上的大括号,它们也是可选的。不过,我认为依靠压抑稍微有些阴暗。


如果您想使用比
float
嵌套数组(例如
矩阵
类型或其他类型)更高级别的类型,初始化可能会变得很棘手。

谢谢,但是我不完全理解后一个示例。在这种情况下,第13项的索引是什么?C和C++中的[2 ] [3 ]或[2 ] [2 ] [1 ]索引是否从0开始。这将是术语[1][1][0]。谢谢,但我不完全理解后一个示例。在这种情况下,第13项的索引是什么?C和C++中的[2 ] [3 ]或[2 ] [2 ] [1 ]索引是否从0开始。这将是条款[1][1][0]。