0

ウィキペディアの動的配列の記事を読む

最後の空のメモリセルがいっぱいになると、等比数列のメモリが自動的に割り当てられ、データ全体が新しい配列にコピーされます。増加した量よりも多い量の元素を除去するとどうなりますか?メモリの割り当ても自動的に解除されますか?それともそのままにしますか?たとえば、上記のウィキペディアのリンクの右上にある画像では、

ここに画像の説明を入力してください

最後のステップの後2|7 | 1 | 3 | 8 | 4 | 1つは2を除くすべての要素を削除します。それではどうなりますか?小さいサイズのメモリを割り当てて、内容全体を新しいものにコピーしますか?副次的な質問:動的配列に割り当てられるメモリの初期量をどのように、または何が決定しますか?

4

1 に答える 1

1

あなたが引用する記事はあなたの質問に答えます:

「多くの動的アレイは、サイズが特定のしきい値を下回った場合に、基盤となるストレージの一部の割り当てを解除します。[...]」

それは本当に読む価値があります;-)

特定のサイズが必要になることが事前にわかっている場合のために、一部の実装では特定のメソッド(C ++標準ライブラリの「reserve()」)が提供されます。

于 2013-02-05T10:47:50.917 に答える