Насчет хешей (ака ассоциативных массивов): если кому надо, гляньте модуль Containers (Uses contnrs), там должна быть рабочая реализация.
http://www.freepascal.org/docs-html/fcl ... dex-4.html
Модератор: Модераторы
Си создавался и поддерживался как голый функционал, в нём всё подчинено сделать так, чтобы достигнуть цели некими минимальными средствами. Поэтому, с точки зрения эстетики, Си - мерзок, некрасив.
Нет! Этой бесовщины не надо!Такие конструкции тоже запрещают, когда пишут софт для авиационного прибора!
Шурик Сетевой писал(а):Насчет хешей (ака ассоциативных массивов): если кому надо, гляньте модуль Containers (Uses contnrs), там должна быть рабочая реализация.
http://www.freepascal.org/docs-html/fcl ... dex-4.html
c := a := b;
vada писал(а):А против множеств значит возражений нет? Никто не попинал даже
$data = array ('n1' => array('name' => 'main_base', 'pass'=>'123', 'n2' => array('name' => 'second_base', 'pass'=>'678'));
Насчет хешей (ака ассоциативных массивов): если кому надо, гляньте модуль Containers (Uses contnrs), там должна быть рабочая реализация.
http://www.freepascal.org/docs-html/fcl ... dex-4.html
v-t-l писал(а):http://www.aleprojects.com/ru/doc/talearray, он же на SourceForge http://sourceforge.net/projects/talearray/
http://www.lazarus.freepascal.org/index.php?topic=12077.0
Max Rusov писал(а):devels
Что то я сильно сомневаюсь, что ассоциативный массив на PHP покажет более высокую скорость чем двоичная коллекция на Delphi. Вы производили замеры? Позвольте поинтересоваться цифрами.
Max Rusov писал(а):devels
Можно увидеть цифры? А в идеале - тесты?
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,
SysUtils,
Windows,
contnrs
{ you can add units after this };
{$R *.res}
var
HashT: TFPStringHashTable;
I, J, t: Integer;
Val: AnsiString;
SAVE_INTS: Array of String[4];
begin
HashT := TFPStringHashTable.Create;
SetLength(SAVE_INTS, 1000);
for i := 0 to 1000 do
SAVE_INTS[ i ] := IntToStr(i);
t := GetTickCount;
for j := 0 to 1000 do
begin
HashT.Clear;
for i := 0 to 1000 do
HashT.Add(SAVE_INTS[i]+'x', 'x');
for i := 0 to 1000 do
val := HashT.Items[SAVE_INTS[i]+'x'];
end;
WriteLn(GetTickCount - t);
end.
$t = microtime(1);
$j = 0;
while ($j++ < 1000){
$i = 0;
$arr = array();
while ($i++ < 1000)
$arr[$i.'x'] = 'x';
$i = 0;
while ($i++ < 1000)
$val = $arr[$i.'x'];
}
echo (microtime(1)-$t)*1000;
Sergei I. Gorelkin писал(а):А если SAVE_INTS объявить как array of ansistring?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8