Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2012-03-30 21:21:41 ЛС | профиль | цитата
nesco, я не про кластерный метод говорил, а про классический односвязный список.

Теперь про твой "кластерный список" (если что не так понял, просьба больно не пинать).

Ну, как ты сам заметил, память будет использоваться неэффективно - мало того, что даже 1 элемент будет занимать целый кластер, да ещё нужна память для хранения таблицы этих кластеров. Таблица - это N*sizeof(pointer) (в случае кластеров фиксированного размера). Затраты на чтение: одно деление (а оно чуть медленнее, чем остальные операции; можно заранее посчитать 1/размер_кластера, тогда можно использовать умножение), две арифметических операции (вычисление адреса), чтение. То есть как всегда - теряем в памяти, выигрываем в скорости. Кстати, гибридный подход (выделение памяти кластерами, но с линейной адресацией) используется во многих классах-контейнерах из STL.
карма: 1

0