0

サイズを定義せずに配列を初期化する方法はありますか。ループが実行されると配列が再割り当てされるため、配列のサイズは自然に増加します。

4

3 に答える 3

2

箱から出してそのようなものはありません。これを行う独自の配列のようなデータ構造を作成する必要があります。注意すれば、実装するのはそれほど難しいことではありません。

あなたが探しているのは、大まかに言えば、作成時にmalloc事前定義されたサイズを割り当て(たとえば、を使用)、その内部の連続したスペースを配列のスロットとして使用し始めるデータ構造です。次に、さらにアイテムが追加されると、reallocそのスペースが再割り当てされます (たとえば、 を使用)。

もちろん、単純な配列で使い慣れたインデクサー構文を使用することはできません。代わりに、データ構造は、内部で上記を処理する独自のset/get関数のペアを提供する必要があります。したがって、set関数は引数で指定されたインデックスをチェックし、そのインデックスが配列の現在のサイズより大きい場合は、再割り当てを実行します。次に、いずれの場合でも、指定されたインデックスに提供された値を設定します。

于 2013-04-28T07:00:47.610 に答える