SophiaFramework UNIVERSE 5.3 |
SFXArray のすべての要素は、 可変長の連続したメモリ領域にまとめて格納されます。
一方、SFXList の各要素は、 断片化したメモリ領域にバラバラに格納され、前後の要素にポインタ経由で繋がれています。
SFXArray と SFXList の相違点は、以下の通りです。
項目 | SFXArray | SFXList |
---|---|---|
要素へのアクセス | SFXArray::operator[] オペレーターのオペランドや SFXArray::Get / SFXArray::Set 関数の引数にインデックスを指定して、 1 回でダイレクトアクセスできる。反復子・列挙子による線形探索して要素にアクセスすることも可能。 | SFXList::Get / SFXList::Set 関数にインデックスを指定して、 要素にアクセスできるが、リスト内の要素のリンクを辿るのでそれだけ時間が掛かる。 反復子・列挙子による線形探索して要素にアクセスすることも可能。 |
要素の挿入と削除 | 当該要素の後のすべての要素を移動する必要がある。 メモリを再割り当てする場合は、すべての要素を移動する必要がある。 | 前後の要素のポインタの付け替えだけで良い。 |
要素当たりのメモリ量 | 要素の値だけで良い。 | 要素の値に加えて、ポインタ用メモリも必要になる。 |
全体のメモリ効率 | SFXArray::SetCluster 関数で設定するクラスターサイズ単位でメモリ領域が増えるので、 未使用メモリ領域が存在する。 | 要素単位で必要なだけメモリを確保するので、 未使用メモリ領域は存在しない。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |