动态数组的问题,在确定长度之前如何赋值? ( 积分: 100 )

  • 主题发起人 主题发起人 彤心依旧
  • 开始时间 开始时间

彤心依旧

Unregistered / Unconfirmed
GUEST, unregistred user!
想把采集来的字符串赋给一个数组,比如
aa bb cc dd
ee ff gg hh
ii jj kk ll
这样的字符串赋给一个二维数组,列的数量是4,比如S[4],但是i不知道,只有这些字符串采集完毕后才能确的i的值,但是我想在采集的过程中就把这些值赋给一个数组,就需要采用动态数组了,但是动态数组在长度不知道的情况下能赋值吗?二维动态数组如何定义?我用的是C++ Builder。
(BCB中定义的动态数组有一个.Length属性,可以定义数组的长度,是不是一维数组这样做可以,二维数组该用什么值分别定义两个维的长度呢?)
 
二维数组就是数组的数组
 
你看你有多少个数N N除以4 就是i的值
 
BCB的帮助中有
typedef DynamicArray< DynamicArray < AnsiString > > T2DStringArray;

void foo(T2DStringArray &s_array)
{
SetLength(s_array, 10);
for (int i=0; i<s_array.Length; i++)
{ // Set lengths of second dimensions.(NOTE: non-rectangular)
SetLength(s_array, i+1);
for (int j=0; j<s_array.Length; j++)
/* */ s_array[j] = itoa(i*10+j);
}
}
这样如何定义动态二维数组也就明白了,但是其实还是先定义了数组的长度然后再赋值,怎么不先定义长度而赋值呢?
 
delphi高手qq群:23981160
 
var
Row: Integer;
a: array of array of string;
begin
Row := 1;
repeat
SetLength(a, Row);
SetLength(a[Row - 1], 4);
//这里是你赋值的动态
a[Row - 1, 0] := 'aa';
a[Row - 1, 1] := 'bb';
a[Row - 1, 2] := 'cc';
a[Row - 1, 3] := 'dd';
Inc(Row);
unitl 数据收集完毕;
end;
 
多人接受答案了。
 
后退
顶部