C++数组列表还是向量?

0 c++ arrays list

我正在尝试重写用C++编写的用matlab编写的代码.

我在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];
Run Code Online (Sandbox Code Playgroud)

等等...

在c ++中最简单的用法是什么?

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

/Mr.Buxley

unw*_*ind 5

你当然可以一次初始化它们,虽然这听起来像很繁琐的输入:

float terms[256][4] = {
 { 0, 0, 3, 1 },
 { 0, 0, 13, 1 },
 { 0, 0, 3, 2}
 ...
 };
Run Code Online (Sandbox Code Playgroud)

为简单起见,我将其简化为256个4元素数组的数组.如果你想真正表达预期的嵌套,当然这很好,你需要做:

float terms[256][2][2] = {
     { { 0, 0 }, { 3, 1 } },
     { { 0, 0 }, { 13, 1 } },
     { { 0, 0 }, { 3, 2 }}
     ...
     };
Run Code Online (Sandbox Code Playgroud)

这将是256行,每行有一个浮动的两个"列表"的"列表".每个列表都需要大括号.但是,由于C++支持在这些事情中抑制大括号,你也可以这样做:

float terms[256][2][2] = {
     { 0, 0, 3, 1 },
     { 0, 0, 13, 1 },
     { 0, 0, 3, 2}
     ...
     };
Run Code Online (Sandbox Code Playgroud)

事实上,你甚至可以删除每一行的大括号,它们也是可选的.不过,我认为依靠抑制略显阴影.

如果要使用比嵌套数组更高级别的类型float(例如Matrix<2,2>类型或其他内容),初始化可能会变得棘手.