検索しましたが、どの結論も下げませんでした。スパース配列を定義すると、すべての項目が保持されますか?連続メモリ最大インデックスまでのみ割り当てるか、そのインデックスにのみメモリを割り当てます。
array[100000]="ID1"
array[1001]="ID2"
同様に、配列に対して for ループを実行すると、配列のすべてのインデックスが検索されます。配列[i]が存在しますまたはそれだけを指す配列のインデックス定義例えば。 100000と1001。
for(i in array){...}
特定のインデックスにどの値を格納する必要がありますが、メモリ割り当てが心配されるため、スパース配列の場合、実際にどのようにメモリを割り当てるかを理解することが非常に重要です。
ベストアンサー1
~によるとgawk
手動、これは良い一般awk
言語参照です。
配列について覚えておくべき重要な側面は次のとおりです。配列添字は常に文字列です。
つまり、awk
配列は常に関連付けられている、数字キーが文字列として表示されます。使用されるキーのみが配列に保存されます(後で使用する余分なスペースもあります)。数値インデックスは連続的ではないため、希少配列は、同じ数の要素を持つ他の配列よりも多くのスペースを占有しません。
ループの場合、for (k in array) {body}
文法これ:
ループの実行体インデックスごとに1回大量にこのプログラムは以前に使用されたことがあります。
同様に、使用されたインデックスのみが配列反復に含まれます。気づく繰り返し順序が定義されていません。ただし、必ずしも配列に追加される数値や順序ではありません。