77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||||||||||||||||
1 | ||||||||||||||||
Массив, индекс как уникальный ID03.07.2015, 08:27. Показов 2580. Ответов 11
Метки нет (Все метки)
Добрый день.
Пытаюсь сделать список, который хранит в себе список всех обьектов. У этого списка есть поле - ID. По идеи оно должно быть уникальным. Но вот вопрос. При создании массива, стоит ли использовать индекс, как уникальный ID? Class
Сейчас делаю подобие стака, но после каждого удаления объекта - идет сортировка массива. (Сдвиг, что бы занять свободное пространство)
0
|
03.07.2015, 08:27 | |
Ответы с готовыми решениями:
11
Не обнаружен уникальный индекс Не обнаружен уникальный индекс Не обнаружен уникальный индекс Не обнаружен уникальный индекс |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
|
|
03.07.2015, 08:37 | 2 |
0
|
Неэпический
|
|
03.07.2015, 08:48 | 3 |
У Вас получатся скорее упорядоченный массив, а не стек. А если нужна сортировка по ключу (ID), то может std::map использовать?
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
|
03.07.2015, 09:12 [ТС] | 4 |
В таком виде я еще не компилировал. Я пытаюсь сделать, что бы ссылки в структуре напрямую вели на ID объекта. Авось получиться =).
У меня еще идея... Добавить доп. поле, говорящее об "занят/не занят". И не сортировать массив каждый раз при удалении произвольной записи, а просто оставлять поле пустым, пока его не займет новый обьект, которому надо будет найти пустое поле. А при удалении просто менять этот флаг.
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
|
06.07.2015, 02:54 [ТС] | 6 |
Не пойдет. Я вилосепедоизобритатель.
Я все переделал и немного упростил. https://github.com/Valeryn4/Minions Сейчас создал корневой класс, От которого будут наследоваться все другие объекты. Содержит в себе координаты, ID и title. И есть класс "лист обьектов", который и будет хранить в этом списке все существующие обьекты программы. Единственное, я не придумал лучшего способа, кроме как указывать ссылку на лист в конструкторе, в обязательном порядке, что бы обьект автоматически прописывал себя в списке при инициализации. Так же не знал, как придумать авто-удаление из списка, кроме как забить в классе указатель на список, а после при вызове дискриптора по укзаателю удалять себя из списка, но это на костыль больше смахивает. Так же думаю над генерацией ID. Либо генерировать во время создания обьекта, в конструкторе, либо генерировать отдельно, уже в дочерних классах, когда они будут инициализировать особые параметры обьектов.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
06.07.2015, 07:25 | 7 |
ещё чутка, и вы изобретете объектный пул.
в качестве автоматического айдишника объекта можно использовать его адрес. потому что адреса всех объектов гарантированно уникальны.
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
|
06.07.2015, 08:03 [ТС] | 8 |
Интересный подход, в планах у меня есть расчет, что вся эта порнография может быть сохранена в файл и из него выгружена и ID могут уже не соответствовать адресу.
больше велосипедов богу велосипедов Правда эта программа не прилично долго создает объекты я заметил. Примерно 1обьект в секунду, хотя что самое долгое там может быть, так это только функция rand().
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
06.07.2015, 08:22 | 9 | |||||
гм...
ну а если так:
который в конструкторе получает айдишник для объекта. айдишники растут, пока не переполнится тип данных size_t.
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||||||
06.07.2015, 08:46 [ТС] | 10 | |||||
Мне кажется что это не не гибко и не удобно.
У себя я пока что так сделал:
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
06.07.2015, 08:53 | 11 | |||||
просто унаследоваться от некоторого класса,
и не заморачиваться - это не гибко и не удобно? это нужно вызывать только 1 раз за все время жизни программы. вот эта штука:
и чем больше объектов будет набиваться в лист, тем медленее оно будет работать.
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||||||
06.07.2015, 10:06 [ТС] | 12 | |||||
с ним я наблюдал такую картину:
код, внимание на cout! Код конструктора, вызывается при создании обьекта.
Вывод см во вложении. Полный код программы на гитхабе.
0
|
06.07.2015, 10:06 | |
06.07.2015, 10:06 | |
Помогаю со студенческими работами здесь
12
Не обнаружен уникальный индекс Уникальный индекс с датой Составной уникальный индекс Не может обнаружить уникальный индекс Уникальный индекс по двум полям Уникальный индекс: выдать ошибку повторения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |