![]() |
|
Модераторы: Poseidon |
![]()
|
|
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Функция для удаления элемента со значением ID из хранилища ID_storage и смещение хранилища на место удаленного элемента. Мне кажется в таком алгоритме кроется какой-то баг, ибо при частом приминении функции наблюдается эффект "проскакивания" элементов. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Я бы делал примерно так
У тебя при удалении последнего элемента может произойти выход за границы массива(кстати, а где ты хранишь кол-во элементов?). Еще вопрос - ID_storage сортирован? Можно применить двоичный поиск? Это здорово бы сократило время работы. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| En_t_end |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
Mayk
Как раз в ID_storage_count Добавлено @ 18:43
Нет, там храниться бяка, причем в реале эта функция состоит в сложной отсинхронизированной многопоточной системе, поэтому я не могу гарантировать сортировку, а даже если я её сделаю, то только увеличу время обработки, так как сортировку придется делать в отдельном треде, а у меня их и так в некоторые моменты больше 100 работают. |
||||
|
|||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Мне почему-то кажется, что это значение не плохо бы изменить в случае успешно удаленного элемента и не трогать в случае когда элемент не был найден. Кстати, для линейного поиска можно юзать lfind. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 2 Всего: 20 |
А.... теперь я увидел свою ошибку... ID_storage_count в обязательном порядке должна уменьшаться при сдвиге. Ибо в обратном случае, я тогда получаю непредсказуемый ID в совершенно не нужном мне месте, сейчас исправлю, ну конечно, ID_storage_count ни в коем случае не должен быть const!
Добавлено @ 18:48
Угу, мой предыдущий пост я писал, не видя твой. Спасибо! |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |