|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.06.2017, 11:18 | #1 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Список с уникальными идентификаторами содержащихся объектов
Здравствуйте!
Пробую сделать объект с ID и список из этих объектов, чтобы у каждого объекта ID был уникальным и постоянным в течении его времени существования. На данный момент сделал это так: Код:
Последний раз редактировалось Ship_1; 30.06.2017 в 12:01. |
30.06.2017, 13:04 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Можно просто хранить какой-нибудь глобальный счетчик с последним ID.
Или GUID. Для быстрого поиска по уникальному ID есть специальные структуры данных типа хеш-таблиц и т.п. (в разных языках/библиотеках по разному называются: hash table, dictionary, map, ...) В старых Дельфи вроде нет стандартной реализации этого. Я бы сделал его private (и public свойство/функция для его чтения) и устанавливал в конструкторе.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 30.06.2017 в 13:09. |
30.06.2017, 13:15 | #3 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Спасибо за комментарий. Что-то я о глобальном счётчике не подумал, но об аналогичном варианте думал: при добавлении брать ID последнего элемента и увеличивать на 1. Но я решил, что это не оптимальный способ: при удалении элемента из списка его ID становится не нужной и её можно использовать вновь. Для этого и сделал FindEmptyID.
Хеш-таблицы, наверное, интересный, но непонятный мне вариант. И программку я делаю на Delphi 7. |
30.06.2017, 13:24 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
30.06.2017, 14:12 | #5 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Хватает теоретически. Убедили, меняю поиск пустого ID на поиск максимального ID (чтобы в случае сохранения/загрузки списка потом можно было бы продолжить добавления)
|
30.06.2017, 14:32 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
отлично.
если порядок не будет меняться, то максимальный ID всегда последний элемент в списке: Код:
|
30.06.2017, 14:57 | #7 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Я сначала о такой реализации и подумал, но потом передумал, решив, что возможна сортировка, которая собьёт всё. Придётся, видимо, вводить глобальную переменную или поле в TNomList.
|
30.06.2017, 15:03 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
да, сортировка собьёт.
если она возможна, тогдаprivate поле и методы: getMaxID, setMaxID, GetNextMaxID (получить максимальное значение, нарастить его на единицу, записать и вернуть значение) и его использовать в TNomList.Add |
30.06.2017, 15:21 | #9 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Ship_1
Если завести глобальную ячейку с последним освобождённым ID. То поиск будет быстрее чем хеши. Сортировка не нужна. Достаточно хранить максимальный выделенный ID и количество свободных.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
30.06.2017, 15:22 | #10 | |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Serge_Bliznykov, я не смог толком разобраться с property и не понял его преимущества (если они есть) по сравнению с просто переменной в классе, типа:
Код:
Цитата:
Зачем количество свободных? Не понял... Сортировка мне по работе с программой нужна, по другим полям. Последний раз редактировалось Ship_1; 30.06.2017 в 15:28. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
список полиморфных объектов | denrubun | Общие вопросы C/C++ | 4 | 17.11.2013 14:38 |
Добавление своих объектов в Добавление своих объектов в двунаправленный кольцевой список | voidmain | C# (си шарп) | 3 | 21.03.2013 13:08 |
динамический список объектов | tim47 | Помощь студентам | 0 | 16.05.2012 16:17 |
проблема с идентификаторами | itwaswritten | Помощь студентам | 0 | 08.05.2010 20:34 |
Список полиморфных объектов | kaarb | Помощь студентам | 0 | 20.06.2009 11:24 |