Название: Нужен аналог QQueue с случайными доступом к элементам Отправлено: Admin от Май 29, 2009, 11:57 Есть очередь QQueue. Хочется функцию получения(удаления) элемента из случайного места очереди?
Есть ли какие нибудь идеи? Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: BRE от Май 29, 2009, 12:12 Ну так QQueue наследуется от QList, а там все это есть.
Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: Admin от Май 29, 2009, 12:47 а нельзя ли поподробнее с примером
PS: пятница) Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: nixman05 от Май 29, 2009, 12:50 Вообще то QQueue реализует динамическую структуру данных с дисциплиной LIFO
т.е. добавляются элементы с одного конца, а удаляются с другого. Известны указатели на начало и конец очереди. Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: lit-uriy от Май 29, 2009, 13:43 2 Admin, дык может Список и пользовать (QList)?
Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: BRE от Май 29, 2009, 13:43 а нельзя ли поподробнее с примером PS: пятница) Код
Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: nixman05 от Май 29, 2009, 22:43 а нельзя ли поподробнее с примером PS: пятница) Код
Это все конечно хорошо но не корректно. Очередь это очередь, Стек это стек. Список это список. С очереди нельзя получить доступ к произвольному элементу. Список позволяет это сделать. Для того чтобы получить доступ к произвольному элементу очереди, удаляя их из очереди и сохраняя в вспомогательную очередь, затем изменить элемент и после этого восстановить удаленные элементы очереди. Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: Rcus от Май 30, 2009, 05:41 Продолжая цепочку утверждений: std это std, Qt это Qt. Спасибо, капитан, вы просто открыли нам глаза, что бы мы без вас делали.
Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: spectre71 от Май 30, 2009, 08:39 Есть очередь QQueue. Хочется функцию получения(удаления) элемента из случайного места очереди? Хотелось бы узнать подробнее о параметрах задачи.Есть ли какие нибудь идеи? 1) Какой длины очередь: - всегда короткая - всегда длинная - любая или неизвестно 2) Как часто происходит выбока елемента из очереди 3) Как часто происходит доступ к произвольному елементу очереди 4) Как часто происходит удаление произвольного елемента очереди Понятия "часто" и "длина" зависят друг от друга и влияют на производительность только для конкретной задачи. К примеру если очередь короткая и операции с элементами происходят редко, то тупо берем список и не заморачиваемся псевдооптимизацией. Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: spectre71 от Май 30, 2009, 08:56 Пример для очереди.
1) Какой длины очередь: ограниченная не больше N элементов, не жалко памяти на постоянное содержания N элементов 2) Как часто происходит выбока елемента из очереди - очень часто 3) Как часто происходит доступ к произвольному елементу очереди - очень часто 4) Как часто происходит удаление произвольного елемента очереди - очень редко Берем обычный список и "ЗАКОЛЬЦОВЫВАЕМ" его: Храним два индекса на начало и конец очереди, изменяем их на операциях добавления и выборки, Перезаписываем указатель на объект на операции добавления. Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: spectre71 от Май 30, 2009, 11:41 В общем случае через постронение и манипуляции с бинарным деревом, можно свести стоимость операций:
вставка, удаление получение по идексу = Co*log(N) А для сортированного(с поддержкой автосортировки) операция получение по ключу = Co*log(N) Построение дерева = Co*N*log(N) Стоимость сортировки зависит от текущего алгоритма сортировки и = Cost(ListSortAlg) + Построение дерева. N - кол-во элементов списка. Co - констана в зависимости от операции log - логарифм Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: Admin от Май 31, 2009, 23:25 Я сделал уже с QList, а очередь не большая - примерно 1000 элементов всего)
Название: Re: Нужен аналог QQueue с случайными доступом к элементам Отправлено: spectre71 от Июнь 01, 2009, 07:35 До 1000-10000 элементов лучше с деревом и не и не заморачиваться.
Констатнты стоимости опраций вставки/удаления огромны. А кольцо попробуй - если частое случайное чтение. |