![]() |
|
Модераторы: bsa |
![]()
|
|
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
vovamakr, а удалять entry и entry->key кто будет?
Обычно в ассоциативных массивах не сдвигают записи при удалении, а оставляют дырки. Имеется size (число ненулевых записей) и reservedSize (число выделенных записей в массиве). size <= reservedSize. Добавлении нового элемента при равенстве reservedSize увеличивается. Если мы больше не планируем добавлять новых ключей, делается упаковка. При поиске, добавлении и удалении ключа сначала вычисляется кеш-код. Берется остаток от деления кэш-кода на reservedSize и получаем index, по которому предпочтительно разместить новый ключ. Если index занят другим ключом, проверяем index+1 и т. д. В неблагоприятном случае придется просмотреть весь массив, но чаще всего будем сразу попадать на нужную запись. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Если порядок записей в ассоциативном массиве не важен (а это в большинтстве случаев так), то при удалении элемента можно просто менять местами последний элемент и удаляемый, а потом уменьшать на 1 счетчик активных элементов в массиве. Но в этом случае нужно 2 счетчика - размер массива и количество активных элементов (как уже советовал math64).
Это сообщение отредактировал(а) xvr - 6.11.2015, 11:50 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |