我有许多常量数组不都具有相同数量的元素。
为了存储这些数组,我已经声明了一个足够大的数组类型来存储(或引用?)这些数组中最大数组的每个元素:
type
TElements = array [1 .. 1024] of Single;
这些TElements数组中的每一个都与另一个 具有相同数量元素的TElements数组逻辑关联。
因此,为了配对这些大小相同的数组,我已将记录类型声明为:
type
TPair = record
n : Integer; // number of elements in both TElements arrays
x : ^TElements;
y : ^TElements;
end;
然后我定义了包含常量TElements数组对的常量TPair记录:
const
ElementsA1 : array [1 .. 3] of Single = (0.0, 1.0, 2.0);
ElementsA2 : array [1 .. 3] of Single = (0.0, 10.0, 100.0);
ElementsA : TPair =
(
n : 3;
x : @ElementsA1;
y : @ElementsA2;
);
ElementsB1 : array [1 .. 4] of Single = (0.0, 1.0, 2.0, 3.0);
ElementsB2 : array [1 .. 4] of Single = (0.0, 10.0, 100.0, 1000.0);
ElementsB : TPair =
(
n : 4;
x : @ElementsB1;
y : @ElementsB2;
);
这似乎是一种引用数组数据的低效方式(也许不是,我不知道)。
我想维护一个包含两个常量数组的常量数据类型(“对”数据类型)。
在每个“对”中,两个数组都保证具有相同数量的元素。
但是,不能保证一个“对”中的数组元素数量等于任何其他“对”中的数组元素数。
有没有办法声明一个常量“pair”数据类型,以便包含的数组大小由常量数组定义决定?
理想情况下,我想摆脱TElements类型和尴尬的指针。如果它会编译,这样的东西会很酷:
type
TPair = record
x : array of Single;
y : array of Single;
end;
const
ElementsA : TPair =
(
x : (0.0, 1.0, 2.0);
y : (0.0, 10.0, 100.0);
);
ElementsB : TPair =
(
x : (0.0, 1.0, 2.0, 3.0);
y : (0.0, 10.0, 100.0, 1000.0);
);
但我想因为数组被声明为动态数组,所以它不想在运行时为它们分配内存?
答案 0 :(得分:4)
有没有办法声明一个常量“pair”数据类型,以便包含的数组大小由常量数组定义决定?
不,遗憾的是这是不可能的。您必须在方括号内声明数组的大小。