处理数组的选项:
有三种类型的数组:
对于静态数组,有以下这些函数:
名称 |
目的 |
参数 |
返回值 |
例子 |
high |
得出最后一个数组元素的索引 如果数组是多维度的,则使用第一个索引 |
1: 数组 |
INTEGER |
i:=high (array);
|
length |
得出数组的长度 |
1: 数组 |
INTEGER |
but length(a[1])==length(b[1])==4 |
low |
得到第一个数组元素的索引 |
1: 数组 |
INTEGER |
i:=low (array); |
对于动态数组,有以下这些函数:
名称 |
目的 |
参数 |
返回值 |
例子 |
append |
将一个数组或一个数组元素追加到另一个数组中 第 11 版起也允许追加单个元素
|
1:: 数组: Dest=动态数组 |
无 |
|
capacity |
产生动态数组在不自动分配内存的情况下可以获得的最大元素数(不需要与数组长度相匹配)。 |
1: 数组: Source |
INTEGER |
i:=capacity(arObjects); |
copy |
将一个数组复制到另一个数组上 |
1: 数组: Source |
数组: Dest |
|
high |
得到最后一个数组元素的索引 |
1: 数组 |
INTEGER |
i:=high (arObjects); |
insert |
将一个数组或一个数组元素插入另一个数组的某一位置。 |
1: 数组: Dest=动态数组 |
无 |
|
length |
得到数组的长度 |
1: 数组 |
INTEGER |
|
low |
得到第一个数组元素的索引 |
1: 数组 |
INTEGER |
i:=low (arObjects); |
remove |
从一个数组中删除某些元素 |
1: 数组: 动态数组 |
无 |
|
reserve |
分配存储空间给一个数组中一定数量的元素(不创建或删除任何元素,只保留必要的存储空间)。 |
1: 数组: 动态数组 |
无 |
reserve(arObjects,100); |
setLength |
将数组的长度设置为一个新的值 |
1: 数组: 动态数组 |
无 |
var dyn_arr: array of real; |
reserve |
第 11 版起允许为数组中给定数量的元素预留最小的内存(请注意:没有元素被创建或删除,但只有所需的内存被预留)预留并不取代对 setLength 的调用)-该函数可用于长期优化,可用于避免不必要的数组内存的重新分配 |
1: 动态数组 2: INTEGER: 要预留的项的数量 |
|
var arr: array of string; i: integer; begin reserve( arr, 2000000); println(capacity(arr)); for i:=0 to 1999999 do begin println("finished"); end.
|
capacity |
第 11 版起返回数组所能包含的最大元素数目,而不会自动创建新的内存 |
1: 动态数组 |
|
见 reserve |
对于开放数组,有以下这些函数:
名称 |
目的 |
参数 |
返回值 |
例子 |
setLow |
设置第一个元素的索引 |
1: 数组 * |
数组 * |
procedure PrintCA (a: array * of char); var dyn_c: array of char; PrintCA (dyn_c); |
sliceLeft |
得到一个数组的第 n 个元素 |
1: 数组 |
数组 * |
|
sliceMid |
得到从某一位置开始的数组的第 n 个元素 |
1: 数组 |
数组 * |
|
sliceRight |
得到一个数组的最后 n 个元素 |
1: 数组 |
数组 * |