![]() |
|
|
![]()
|
|
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
в итоговом листе мапа ключи автоматически отсортируются по возрастанию их значений...а как их не сортировать? то есть чтобы данные легли в лист мапа точно в порядке их записи в этот мап (нулевой элемент списка мапа=94, 2-ой=82 и т.д.)...если в мапе нельзя отключить сортировку данных, то подскажите другой контейнер для хранения данных, но жел-но в таком же виде - типа "<ключ, данные>"... пробовала QHash, но в него вообще непонятно как данные заносятся - и не сортируются, и не в порядке их записи... Это сообщение отредактировал(а) kuvshinka - 22.11.2012, 19:22 |
|||
|
||||
| Snake174 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 5.10.2011 Где: Miass Репутация: нет Всего: нет |
Попробуй использовать QVector<QPair<ushort, void*> > mmap;
|
|||
|
||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
понятно...попробую...то есть у мультимапа вообще никак нельзя отключить автосортировку ключей?
|
|||
|
||||
| Jeka178RUS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
Из доки: QMap and QHash provide very similar functionality. The differences are: QHash provides faster lookups than QMap. (See Algorithmic Complexity for details.) When iterating over a QHash, the items are arbitrarily ordered. With QMap, the items are always sorted by key. The key type of a QHash must provide operator==() and a global qHash(Key) function. The key type of a QMap must provide operator<() specifying a total order. Так что если важен порядок элементов, а не быстрый доступ по ключу, тогда вам необходимо использовать контейнеры QList или QVector. Тут уж как удобнее контейнер пар элементов или два контейнера, но доступ к элементам будет линейным. Ну или можно хранить отдельно QMap и Vector ключей в нужном вам порядке, если памяти не жалко |
|||
|
||||
| kuvshinka |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
подскажите пож-та правильный синтаксис команд indexof и contains:
ответ: (886, 71, 5, 99) так по какому же принципу (в каком порядке) записываются данные в QMultiHash? |
||||||
|
|||||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
||||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
конечно неверно...
я бы посоветовал пользоваться stl-алгоритмами, т.к. в них можно задать предикат поиска. типа такого
не проверял, но, возможно, где-то не хватает typename перед типом (привык, что студия поумнее гцц и не требует этого атавизма) Это сообщение отредактировал(а) borisbn - 24.11.2012, 11:37 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
понятно...и все-таки возвращаясь к мультимапу - а что тогда делает его фукнция setInsertInOrder? по названию вроде похоже на задание порядка записи данных в мап (мне бы как раз то что надо было бы)...почему-то описания этого метода нет...
|
|||
|
||||
| kuvshinka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
Jeka178RUS: а что будет быстрее работать - отдельно QMap с данными и Vector ключей к ним в нужном мне порядке ИЛИ вектор пары
|
|||
|
||||
| Jeka178RUS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
Смотря в том какой доступ для вас нужен: 1) Вас интересует доступ по ключу (или эта операция используется значительно чаще остальных), тогда вы используете QHash для доступа к элементам за константное время и поиск позиции ключа в массиве ключей за линейное время. 2) Порядок элементов первостепенен, тогда выборка из вектора по индексу за константное время, но поиск по ключу за линейное время. Тогда вектор пар удобнее, доступ к элементу пары всегда постоянен. Хранение отдельно по мне удобнее и имеет одно преимущество: при необходимости доступа по ключу, вы обращаетесь к Hash - константное время, а по индексу вы обращаетесь в вектору за ключом (константное), а по этому ключу к хешу (опять константное время), а операция получения индекса ключа в векторе остается линейной. Это сообщение отредактировал(а) Jeka178RUS - 26.11.2012, 14:18 |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |