Russian Qt Forum

Qt => Общие вопросы => Тема начата: lolbla2 от Февраль 25, 2012, 20:39



Название: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: lolbla2 от Февраль 25, 2012, 20:39
Нужен стандартный класс или что-нибудь для реализации хештаблицы и дерева..


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: mutineer от Февраль 25, 2012, 20:41
QHash?


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: lolbla2 от Февраль 25, 2012, 20:44
QHash?

А как он работает? Вообщем мне нужно  Сравнить эффективность дерева и хештаблицы.


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: mutineer от Февраль 25, 2012, 20:47
тебе надо сравнить эффективность реализации дерева и хештаблицы в Qt?


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: lolbla2 от Февраль 25, 2012, 20:48
тебе надо сравнить эффективность реализации дерева и хештаблицы в Qt?

Да, задание такое на лабу... Короче нужно сравнить скорость поиска по двоичному дереву и по хештаблице..


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: mutineer от Февраль 25, 2012, 21:11
тебе надо сравнить эффективность реализации дерева и хештаблицы в Qt?

Да, задание такое на лабу... Короче нужно сравнить скорость поиска по двоичному дереву и по хештаблице..

Если в задании нету ничего про Qt, то скорее всего надо самому реализовать)))


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: lolbla2 от Февраль 25, 2012, 21:22
тебе надо сравнить эффективность реализации дерева и хештаблицы в Qt?

Да, задание такое на лабу... Короче нужно сравнить скорость поиска по двоичному дереву и по хештаблице..

Если в задании нету ничего про Qt, то скорее всего надо самому реализовать)))

Да можно и стандартное юзать, а вот бинарное дерево, нету в Qt ? Кстати а какой метод разрешения коллизий в QHash используется?


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Igors от Февраль 25, 2012, 21:34
"Дерево" имеется ввиду не класс (Q)Tree а в смысле "алгоритм". Напр

std::set. std::map, QMap - дерево (красно-черное)
QHash, QSet - хеши

Проще всего сравнить напр (std::set + QSet), ну или (QMap + QHash). 


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Авварон от Февраль 25, 2012, 21:59
QMap - дерево (красно-черное)
Неправда


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: lolbla2 от Февраль 25, 2012, 22:19
"Дерево" имеется ввиду не класс (Q)Tree а в смысле "алгоритм". Напр

std::set. std::map, QMap - дерево (красно-черное)
QHash, QSet - хеши

Проще всего сравнить напр (std::set + QSet), ну или (QMap + QHash).  

QHash, QSet - хеши - а какой там метод разрешения коллизий используется? если я например одно и то же значение попытаюсь занести по одному ключу?
QMap - дерево - мне бинарное нужно а что это ещё за красно - чёрное ? ;D а серо-бурмалинового нет? ;D ;D


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хешт
Отправлено: mutineer от Февраль 25, 2012, 23:12
QMap - дерево - мне бинарное нужно а что это ещё за красно - чёрное ? ;D а серо-бурмалинового нет? ;D ;D

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

а по поводу значений по одному ключу - в документации ищи


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Rem Norton от Февраль 25, 2012, 23:51
1. Нет в QHash никакого разбора коллизий. А вот какой он в QMultiHash - БМП... Исходники доступны, кому надо, тот выяснит.
2. Деревьев готовых нет. Посторить можно с нуля, на основе QMap или же на основе QStandardItemModel (если надо отобразить на интерфейсе).
3. Хорошо смеется тот, кто смеется без последствий.


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Fat-Zer от Февраль 26, 2012, 00:41
1. Нет в QHash никакого разбора коллизий. А вот какой он в QMultiHash - БМП... Исходники доступны, кому надо, тот выяснит.
2. Деревьев готовых нет. Посторить можно с нуля, на основе QMap или же на основе QStandardItemModel (если надо отобразить на интерфейсе).
3. Хорошо смеется тот, кто смеется без последствий.
1. есть конечно... емнип там то, что называется закрытым, но надо смотреть...
2. QMap - не представляю, чем это может быть, как ни деревом. в любом случае сложность у него, как у дерева. В stl тоже что-то точно представлено деревом, но что именно - не помню

lolbla2, с такой реализацией препод вас ИМХО пошлёт...


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Rem Norton от Февраль 26, 2012, 01:04
1.
Код
C++ (Qt)
QHash<QString,int> hash;
hash["one"] = 1;
hash["two"] = 2;
hash["one"] = 3;
 
qDebug() << hash;
 

в отладке: QHash(("one", 3)("two", 2))

И каким методом тут какая коллизия разобрана???

Не надо путать с stl.

2.
Цитировать
The QMap class is a template class that provides a skip-list-based dictionary.
и не более того. Утверждение, что QMap - это всегда дерево так же неверно, как то, что "дерево - это всегда индекс".


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: mutineer от Февраль 26, 2012, 01:08
в отладке: QHash(("one", 3)("two", 2))

И каким методом тут какая коллизия разобрана???

Коллизия в хеш-таблице - это когда два разных ключа дают одинаковый хеш!


Название: Re: Подскажите есть ли ыв Qt что-нибудь для хештаблиц и дерева?
Отправлено: Rem Norton от Февраль 26, 2012, 01:12
в отладке: QHash(("one", 3)("two", 2))

И каким методом тут какая коллизия разобрана???

Коллизия в хеш-таблице - это когда два разных ключа дают одинаковый хеш!
Баалин, точно!!! Все, спать! :)