Есть ли в Qt видоизмененный QMap, тогда не надо будет изобретать велосипед |
Здравствуйте, гость ( Вход | Регистрация )
Есть ли в Qt видоизмененный QMap, тогда не надо будет изобретать велосипед |
AD |
18.8.2008, 10:43
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
В Qt есть класс-контейнер QMap<Key, Value>. А есть ли в Qt такой спец. QMap, который имеет не один, а два ключа: т.е. вначале ищет по одному ключу, если ничего не нашел, пытается поискать по второму ключу!
Для чего это нужно: чтобы при вот таком, предположим, QMap<QString, QString, double> и такой строке:
Он пытался найти этот ключ в 1-ом ключе и во 2-ом? |
|
|
sploid |
18.8.2008, 10:53
Сообщение
#2
|
Студент Группа: Участник Сообщений: 51 Регистрация: 26.2.2008 Из: Москва Пользователь №: 106 Спасибо сказали: 10 раз(а) Репутация: 1 |
мне кажется тебе нужен не "спец мап" а что-то с логикой поменять.
можешь рассказать поподробней суть задачи. |
|
|
Litkevich Yuriy |
18.8.2008, 11:32
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
18.8.2008, 12:01
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Альтернатива-то есть, но мне она не нравится, потому что в данном случае поможет, а в других нет. В данном случае, можно попросту делать QMap большего размера и записывать туда 2 разных ключа, но с одним и тем же значением.
|
|
|
Tonal |
18.8.2008, 12:08
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Зачем тебе это нужно?
|
|
|
AD |
18.8.2008, 12:40
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата Зачем тебе это нужно? Зачем, зачем? Нужно и все тут! А если серьезно, то для того, чтобы разобрать этот файл:
Альтернативное решение я уже привел. |
|
|
Tonal |
18.8.2008, 13:02
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Опять же всё зависит от того, что ты собираешься делать с данными из этого файла.
Если эти данные изменятся не будут, то и твоё решение вполне прокатит. Если же будут изменятся, то лучше сделать так: Выбираешь "нормальную форму ключа, например для "km|км" пусть это всегда будет строка km (а можно просто enum использовать, если ключи заранее известны) В мапе хранишь данные для ключей только в "нормальной" форме. При приходе ключа, сначала преобразовываешь его в "нормальную форму", а потом достаёшь данные. |
|
|
AD |
18.8.2008, 13:07
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Опять же всё зависит от того, что ты собираешься делать с данными из этого файла. Если эти данные изменятся не будут, то и твоё решение вполне прокатит. Если же будут изменятся, то лучше сделать так: Выбираешь "нормальную форму ключа, например для "km|км" пусть это всегда будет строка km (а можно просто enum использовать, если ключи заранее известны) В мапе хранишь данные для ключей только в "нормальной" форме. При приходе ключа, сначала преобразовываешь его в "нормальную форму", а потом достаёшь данные. Прости, но я не понял как сделать то, что ты предлагаешь! А в моем решении, которое, впрочем, я уже сделал, данные будут изменяться только статически и не очень сильно. Ну попросту добавят еще какие-нибудь размерности в заданном формате и все. |
|
|
Litkevich Yuriy |
18.8.2008, 13:14
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
я бы два словаря использовал:
QMap<QString, QString> - m/s = м/с QMap<QString, double> - m/s = 1 |
|
|
Tonal |
18.8.2008, 13:18
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Я примерно это и имел в виду, только к первому словарю часто нужна ещё некоторая обработка, типа убрать пробелы, перевести в нижний регистр...
Поэтому и написал про преобразование в нормальную форму которое в простейшем случаем может свестись к поиску в хеше. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 13:05 |