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

时间:2009-11-03 12:31:03

标签: 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];

依旧......

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

我可以一次为所有4个值提供尺寸为[256] [2] [2]的数组,还是必须为数组中的每个特定值编写一行?

/Mr.Buxley

1 个答案:

答案 0 :(得分:5)

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

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的嵌套数组更高级别的类型(例如Matrix<2,2>类型或其他类型),初始化可能会变得越来越粗糙。