Войти
ФлеймФорумПрограммирование

Язык D (40 стр)

Страницы: 139 40 41 4245 Следующая »
#585
0:06, 11 янв. 2015

Zefick
Не пойму, что ты мне про ренджи толкуешь. Были у меня std::set с указателями на объекты. И еще один set с указателями на удаленные объекты. Для указателей понятно дело, что никаких дополнительных телодвижений не надо. Один раз за тик я из первого сета удалял все элементы, которые хранятся во втором. В D объекты у меня классы. Как сделать указатель, а не ссылку на класс непонятно. И я заменил set на обычный массив. И скажи, как мне из этого массива удалить объекты, которые хранятся в другом массиве? И мне надо сравнивать на равенство имеено адреса объектов, мне не надо там всяких opCmp и прочего. Я бы хотел бы написать типа такого

objects = setDifference(objects, for_deletion);
но не пойму как это сделать.

Zefick
> Я вообще не увидел где бы ещё это поле инициализировалось.
Вот именно, больше мест нет. Если инициализировать в самой структуре, то не работает. Приходится сначала создавать структуру, потом отдельно явно задавай ей mover, что тупо.


#586
0:07, 11 янв. 2015

Посмотрите мою тему про восстановление данных, там я как раз с множествами работал и сортировкой и сравнением массивов, причём очень больших.

#587
0:45, 11 янв. 2015

kipar
> а, ну и да, маляр шлемеля.
А почему нельзя новый поиск начинать с того места, где закончился предыдущий?

#588
11:24, 11 янв. 2015

kipar
> Я для массивов такую фигню написал (убирание по предикату)
  Ничего, что это то же самое, что и http://dlang.org/phobos/std_algorithm.html#.filter? Только фильтр даже ещё и эффективнее, так как реально из массива ничего не удаляет и не перемещает и даже работает за O(1).

#589
11:33, 11 янв. 2015

Zefick
Мне как раз удалять надо было, например умерших существ из общего списка.

TarasB
По идее надо ещё и с конца идти, чтобы лишних элементов не перемещать,  но и так работало.

#590
14:22, 11 янв. 2015

Забавная дыра в RedBlackTree.remove
http://dpaste.dzfl.pl/e5a7d10d41f6
http://dpaste.dzfl.pl/50586f716819

#591
14:35, 11 янв. 2015

Инициализация поля через new
http://dpaste.dzfl.pl/100cab2a45a5
http://dpaste.dzfl.pl/ea6746251c50

#592
14:59, 11 янв. 2015

Фильтрация массива без аллокаций, хе хе
http://dpaste.dzfl.pl/38bd790d8cab

#593
15:07, 11 янв. 2015

Hardcode
> Фильтрация массива без аллокаций, хе хе
хм... ну на стеке копия наверняка создается,
так что ни чего такого прям вах мне кажется нет

#594
15:08, 11 янв. 2015

или там ленивая фильтрация?

#595
15:12, 11 янв. 2015

Hardcode
> Инициализация поля через new
> http://dpaste.dzfl.pl/100cab2a45a5

Вот, у тебя как раз указатели одинаковые получились? Как раз, что я и говорил.

#596
15:16, 11 янв. 2015

cNoNim
> или там ленивая фильтрация?
FilterResult ленивый, да

+ Показать

Можно напороться на грабли, если одновременно с его итерацией менять исходный массив, в моем случае вроде все ок будет.
#597
15:21, 11 янв. 2015

Hardcode
ну в любом случае оно и в императивном виде будет смотреться не плохо
по сутит то ты все элементы которые подходят по условию сдвигаешь в перед
а затем обрезаешь хвост
обычный цикл над массивом

#598
15:24, 11 янв. 2015

Не пойму, как пользоваться этими rb-tree с указателями на класс, вот что не так в этом коде?
http://dpaste.dzfl.pl/f3558c5575ca

#599
15:33, 11 янв. 2015

ud1
  Ты вообще понимаешь, что ты делаешь?
  http://ideone.com/UH8cgD

Страницы: 139 40 41 4245 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.