Показать сообщение отдельно
  #6  
Старый 14.12.2012, 21:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Чтобы индексом было имя - стоит подумать. Подумать раз 50, прежде чем такое реализовывать.
Если индекс - число, то i - элемент массива получается так:
Код:
 element := (array + i * sizeof(element))^;
Одно умножение, одно сложение и одно взятие по адресу. 3 операции.
А если индекс - произвольные данные, то единственный способ использовать таков (на псевдокоде):
Код:
для каждого элемента из массива проверить
   если текущий_элемент.индекс = нужный_индекс то
      element := текущий_элемент
И посчитай количество операций, которое понадобится для получения значения, если будет массив например из 75000 элементов. И особенно это касается строк, т.к. сравнение строк - это сравнение всех их символов. Так что лишний раз не стоит это использовать и в пхп (хотя, наверное, там есть ускорение в виде хешей, однако это все равно далекоооо не 3 операции).

По поводу динамического создания массивов:
Ничто не мешает сделать
1) Создать массив/список указателей на массивы. Изначально все нули. По мере надобности создается массив и его адрес добавляется в этот массив/список.
2) Если нужно только временное пользование, то просто сделать один указатель на массив, для которого выделять память нужного размера.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием