前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

13.7. 配列とリスト

SFXArray のすべての要素は、 可変長の連続したメモリ領域にまとめて格納されます。

一方、SFXList の各要素は、 断片化したメモリ領域にバラバラに格納され、前後の要素にポインタ経由で繋がれています。

SFXArraySFXList の相違点は、以下の通りです。

表 13.3. SFXArraySFXList

項目 SFXArray SFXList
要素へのアクセス SFXArray::operator[] オペレーターのオペランドや SFXArray::Get / SFXArray::Set 関数の引数にインデックスを指定して、 1 回でダイレクトアクセスできる。反復子・列挙子による線形探索して要素にアクセスすることも可能。 SFXList::Get / SFXList::Set 関数にインデックスを指定して、 要素にアクセスできるが、リスト内の要素のリンクを辿るのでそれだけ時間が掛かる。 反復子・列挙子による線形探索して要素にアクセスすることも可能。
要素の挿入と削除 当該要素の後のすべての要素を移動する必要がある。 メモリを再割り当てする場合は、すべての要素を移動する必要がある。 前後の要素のポインタの付け替えだけで良い。
要素当たりのメモリ量 要素の値だけで良い。 要素の値に加えて、ポインタ用メモリも必要になる。
全体のメモリ効率 SFXArray::SetCluster 関数で設定するクラスターサイズ単位でメモリ領域が増えるので、 未使用メモリ領域が存在する。 要素単位で必要なだけメモリを確保するので、 未使用メモリ領域は存在しない。