我正在尝试重写用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
你当然可以一次初始化它们,虽然这听起来像很繁琐的输入:
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>类型或其他内容),初始化可能会变得棘手.
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |