System.Classes.TList.Capacity

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

property Capacity: Integer read FCapacity write SetCapacity;

C++

__property int Capacity = {read=FCapacity, write=SetCapacity, nodefault};

プロパティ

種類 可視性 ソース ユニット
property public
System.Classes.pas
System.Classes.hpp
System.Classes TList

説明

TList オブジェクトがポインタの配列を保持する割り当てサイズを指定します。

Capacity には,リストに保持するポインタの数を設定します。Capacity を設定して,指定されたサイズにリストを拡張するために必要なメモリがない場合には EOutOfMemory 例外が発生します。

Capacity は,メモリを割り当て直さなくても,リストが保持できるオブジェクト数を取得できます。CapacityCount を混同しないでください。Count は使用されているリスト内のエントリ数です。Capacity の値は必ず Count の値と等しいかまたはそれ以上になります。CapacityCount より大きい場合,CapacityCount と同じ値に設定するとメモリの無駄を防げます。

すでに容量がいっぱいのリストにオブジェクトを追加すると,Capacity プロパティの値は自動的に増えます。オブジェクトを追加する前に Capacity を設定しておくと,メモリ再割り当ての回数が減り,結果として性能が向上します。次に例を示します。

メモ:  Delphi の例:

List.Clear; List.Capacity := Count; for I := 1 to Count do List.Add(...);

メモ:  C++ の例:

List->Clear(); List->Capacity = Count; for (int I = 0; I < Count; I++) List->Add(...);

for ループの前に Capacity への代入を行うことによって,以降の Add 演算のたびにリストの再割り当てをしないで済みます。Add の呼び出しによる再割り当てを回避すると,性能が向上し,また Add 演算が例外を生成することもなくなります。

関連項目