Есть метод InitHashtable, но можно ли уничтожить таблицу?
Я не нашел функции DestroyHashtable или типа того, как быть если я создаю таблицу, работаю с ней и хочу избавиться от неё навсегда?
Создание временных таблиц обрекает карту на утечки?
Насколько я знаю, использование массивов внутри структур сильно урезает им максимальное возможное количество экземпляров, потому я собираюсь массивы заменить на хеш-таблицы.

FlushParentHashtable, и вообще ждём вас на луа =)
`
ОЖИДАНИЕ РЕКЛАМЫ...
33
FlushParentHashtable, и вообще ждём вас на луа =)
Принятый ответ
27
тебе одной таблицы может хватить на всю игру. Нету смысла ее удалять. хотя и в правду не нашел такой нативки
15
Bergi_Bear:
FlushParentHashtable
типа этот метод уничтожает полностью без утечек всю таблицу? Если так, то спасибо
Bergi_Bear:
и вообще ждём вас на луа =)
Ну если ты скажешь как перевести полторы сотни тысяч строк кода cJass на луа с сохранением комментариев, имен переменных и отступов, то буду рад перейти на луа
Steal nerves:
тебе одной таблицы может хватить на всю игру. Нету смысла ее удалять
Прочитай зачем я её создаю, она заменяет массивы внутри структур.
Одна таблица, один массив. Родительский ключ - this, дочерний ключ - индекс массива.
33
Drulia_san, а лучше да как Steal nerves, сказал, не уничтожать ХТ и не плодить ХТ в принципе, есть операция FlushChildHashtable, она удаляет все значения по ключу, то не засоришь ничего, но думаю о ней ты точно знаешь раз у тебя там код на 100500 строк
15
Bergi_Bear:
Drulia_san, а лучше да как Steal nerves, сказал, не уничтожать ХТ и не плодить ХТ в принципе, есть операция FlushChildHashtable, она удаляет все значения по ключу, то не засоришь ничего, но думаю о ней ты точно знаешь раз у тебя там код на 100500 строк
Почему никто не читает что я пишу? Сколько раз мне написать что мне нужна отдельная таблица на каждый экземпляр структуры, и даже на каждый массив внутри структуры. Если FlushParentHashtable удаляет таблицу, то этого более чем достаточно.
Одной таблицей технически невозможно обойтись. Я же не виноват, что массив на 100 элементов сокращает макс. количество экземпляров структуры с 8 тысяч до 80. Да, хештаблица в данной ситуации это костыль, но зато помогает обойти ограничение
33
Drulia_san, да читаем мы читаем, просто ты какую-то дикую и странную вещь придумал, честно скажу мб тебе прекрано подойдёт FlushParentHashtable, но за его последствия я не могу ручиться, ибо надо ли перед удалением "Родителя" удалить всех "Детей" - хз, насколько сильно это вызывает утечку - хз.
24
Вот из-за обилия таких костылей автоматический переход на Lua и усложняется больше необходимого т.к. эти костыли вручную выкидывать и переделывать придется.
22
значит ты неправильно делаеш... вот у меня 1 хештаблицу на все виды юнит статы предметы и разные хранение... все лишь 1 и не вижу проблем!
15
Bergi_Bear:
Drulia_san, да читаем мы читаем, просто ты какую-то дикую и странную вещь придумал, честно скажу мб тебе прекрано подойдёт FlushParentHashtable, но за его последствия я не могу ручиться, ибо надо ли перед удалением "Родителя" удалить всех "Детей" - хз, насколько сильно это вызывает утечку - хз.
Удалить всех детей легко, там один parent key, это this.
prog:
Вот из-за обилия таких костылей автоматический переход на Lua и усложняется больше необходимого т.к. эти костыли вручную выкидывать и переделывать придется.
Такой костыль у меня только в одном месте, поудалять всё это будет проще простого, так как это я перепишу вручную потом когда перенесу всё остальное.
33
Drulia_san, ну тогда попробуй чё, о результатах отпишись, не стало ли фаталить не с того ни с сего
15
начит ты неправильно делаеш... вот у меня 1 хештаблицу на все виды юнит статы предметы и разные хранение... все лишь 1 и не вижу проблем!
Извини но ты явно недалекий, потому что не читаешь что я пишу и говоришь какой ты молодец. Мне тебе пирожок с полки достать? Как ты в одну хеш таблицу запихнешь целые массивы значений для каждого объекта индивидуально, учитывая что в объекте массивов будет несколько? А ты в курсе что таблица начинает лагать если её захламить одновременно кучей всего? У меня тоже есть одна общая таблица для игры и её НЕЛЬЗЯ засирать такими данными.
Bergi_Bear:
Drulia_san, ну тогда попробуй чё, о результатах отпишись, не стало ли фаталить не с того ни с сего
Окей
30
Ну если ты скажешь как перевести полторы сотни тысяч строк кода cJass на луа с сохранением комментариев, имен переменных и отступов, то буду рад перейти на луа
Достать war3map.j, сконвертировать в lua, ужаснуться кривости кода и переписать начисто.
Сколько раз мне написать что мне нужна отдельная таблица на каждый экземпляр структуры, и даже на каждый массив внутри структуры
Не забывайте о лимите в 256 таблиц на игру. А вообще такой подход очень пахнет велокостылями.
33
Не забывайте о лимите в 256 таблиц на игру
это лимит одновременных живых хеш таблиц или таблиц вообще включая убитые? если 1, то бояться особо нечего и нас просто в детстве (в 2007 или когда там хештаблицы появились) , запугали, что больше 1 нельзя и так пошло, но уже никто и не вспомнит почему
22
мда! ясно с автором!
у меня хеш не 2 ключ а 4 ключа из 2 ключа имеет гибридный ключ от 2 значение ключа вот тебе многомерный массив в хеш
а как делать вы уже читали
x, y + (offset_y * index)
по умолчагние я поставил 1к offset для каждого значение
30
это лимит одновременных живых хеш таблиц или таблиц вообще включая убитые?
После InitHashtable() дороги назад нет, так что 257ой вызов просто не пройдёт.
нас просто в детстве (в 2007 или когда там хештаблицы появились) , запугали, что больше 1 нельзя и так пошло, но уже никто и не вспомнит почему
Насколько я помню из-за того что таблица тяжёлая и с её огромным диапазоном значений делать несколько просто нет смысла. Есть даже наработка которая позволяет иметь одну таблицу на все случаи жизни.
27
согласен с pro100master неплохой вариант. в своей наработке использовал похожий принцип с оффсетами ссылка <= жутко не хватало пространства для маневра, пришлось так делать.
28
А ты в курсе что таблица начинает лагать если её захламить одновременно кучей всего? У меня тоже есть одна общая таблица для игры и её НЕЛЬЗЯ засирать такими данными.
Ты её просто не чистил, а чистить нужно.
Да и зачем 100500 хештаблиц? У меня карта с кастомным хп, ресурсами, способностями, баффами, 1 хештаблица и всё работает.
22
PT153, автор хочет чтобы структура имел клон но данных заполняли рандомно, но выше ответ уже дали =)
16
255 хт максимум, если ты не можешь впихнуть в БЕЗЛИМИТЫЙ массив, коей хт и является, данные, это чисто твои головные проблемы с неспособностью придумать алгоритм. Ну используй 10 хт для разных данных по одному ключу юнита, ну 255 даже, дроби хендлы, да десятки вариаций, помимо очевидного "у автора проблемы"
29
Есть ещё вариант, который использует опр. диапазон который обозначают как offset, в данном случае для юнитов это 0x100000 или 1048576, где arrid = handleid - offset(0x100000), но в его точности я немного сомневаюсь. Но для обновлённых массивов более менее подойдёт.
Однако, ничего не мешает сделать спец. счётчик, + Custom Value(он же UnitUserData) и задействовать обычные массивы.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.