サイズを定義せずに配列を初期化する方法はありますか。ループが実行されると配列が再割り当てされるため、配列のサイズは自然に増加します。
2480 次
3 に答える
2
箱から出してそのようなものはありません。これを行う独自の配列のようなデータ構造を作成する必要があります。注意すれば、実装するのはそれほど難しいことではありません。
あなたが探しているのは、大まかに言えば、作成時にmalloc
事前定義されたサイズを割り当て(たとえば、を使用)、その内部の連続したスペースを配列のスロットとして使用し始めるデータ構造です。次に、さらにアイテムが追加されると、realloc
そのスペースが再割り当てされます (たとえば、 を使用)。
もちろん、単純な配列で使い慣れたインデクサー構文を使用することはできません。代わりに、データ構造は、内部で上記を処理する独自のset
/get
関数のペアを提供する必要があります。したがって、set
関数は引数で指定されたインデックスをチェックし、そのインデックスが配列の現在のサイズより大きい場合は、再割り当てを実行します。次に、いずれの場合でも、指定されたインデックスに提供された値を設定します。
于 2013-04-28T07:00:47.610 に答える