Форум: "Начинающим";
Текущий архив: 2012.01.29;
Скачать: [xml.tar.bz2];
ВнизСписок записей с быстрым поиском по ключу int64 Найти похожие ветки
← →
Nucer (2011-10-23 13:51) [0]Требуется наличие методов:
1. Добавление нового элемента
2. Поиск элемента
Порядок элементов не имеет значения. Возможность удаления элементов не требуется.
Важно, чтобы поиск по ключу осуществлялся не обычным перебором элементов от 0 до Count - 1.
Есть ли подобный готовый класс в Delphi 7?
← →
DVM © (2011-10-23 14:46) [1]TList
> Важно, чтобы поиск по ключу осуществлялся не обычным перебором
> элементов от 0 до Count - 1.
Держи список отсортированным и бинарный поиск используй. Быстрее бинарного поиска будет только хэш таблица.
Можно даже TStringList взять, но правда твои int64 в нем будут храниться в виде строки. Но бинарный поиск он поддерживает, если изначально отсортирован. Сам сортировать тоже умеет.
← →
Sha © (2011-10-23 15:25) [2]> Есть ли подобный готовый класс в Delphi 7?
нет
← →
Nucer (2011-10-23 15:57) [3]Спасибо за ответы.
Раньше в таких случаях я использовал TStringList c Objects (Sorted = True). Но, по-моему, хранить числа в строках (и сравнивать числа как строки) - это говнокод. Писать же свою реализацию бинарного дерева и поиска по нему нет никакого желания. Странно, что нет готового класса.
← →
MBo © (2011-10-23 15:59) [4]хэш-таблицы хорошо подходят
http://www.boyet.com/FixedArticles/EZDSL.html
http://sourceforge.net/projects/decal/
← →
DVM © (2011-10-23 19:30) [5]
> Nucer (23.10.11 15:57) [3]
> Раньше в таких случаях я использовал TStringList c Objects
> (Sorted = True). Но, по-моему, хранить числа в строках (и
> сравнивать числа как строки) - это говнокод.
Расточительно это, но не такой уж и говнокод. SQLite по-моему все как строки хранит.
> Писать же свою реализацию бинарного дерева и поиска по нему
> нет никакого желания
Зачем тебе дерево? Отсортируй просто данные в TList и потом используй бинарный поиск, алгоритм простой. Не сильно уступает хэш таблицам. При вставке вставляй сразу в нужное место.
А вообще посмотри в книге Бакнелл Джулиан - Фундаментальные алгоритмы и структуры данных в Delphi
примеры к ней тоже в инете валяются, там все что надо есть и готовые классы тоже.
← →
Медвежонок Пятачок © (2011-10-24 09:00) [6]> Есть ли подобный готовый класс в Delphi 7?
Не совсем в делфи, но есть.
IXMLDOMDocument2.
← →
QAZ (2011-10-24 10:08) [7]
> Nucer (23.10.11 13:51)
то что ты описал,это даже на класс ни на какой не тянет,это тупо динамический масив
← →
sniknik © (2011-10-24 10:36) [8]рекорсет тянет на класс? :)
-
положить один на форму подключить к гриду чтобы сразу видеть результат кода -begin
with ADODataSet1 do begin
with FieldDefs.AddFieldDef do begin
DataType:= ftInteger;
Name := "ID";
end;
with FieldDefs.AddFieldDef do begin
DataType:= ftLargeint;
Name := "ID2";
end;
CreateDataSet;
Append;
FieldByName("ID" ).AsInteger:= MaxInt;
FieldByName("ID2").AsVariant:= Int64(MaxInt) + MaxInt;
Post;
Append;
FieldByName("ID" ).AsInteger:= 1;
FieldByName("ID2").AsVariant:= 1;
Post;
Sort:= "ID2";
end;
end;
← →
Ega23 © (2011-10-24 11:53) [9]Динамический массив записей.
Рядом TList<Integer> с упорядоченными индексами записей.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c