PavelK
@PavelK

Как сделать что бы в одном QHash ключе были как бы два ключа, что бы мог находить значение по любому известному из них?

В общем сабж.
Если вкратце для чего -для модели на основе QAbstractItemModel
т.к. в ней нужно отдавать значения по строке, т.е. от 0 до N
но хотелось бы оставить возможность находить значения не по строке а на пример по айдишнику
для этого хотелось бы что бы в одном QHash ключе было как бы два ключа и находить значение по любому известному.
для этого не хочется делать двух QHash что бы ещё заморачиватся и следить что бы и там и там были правильные значения.
  • Вопрос задан
  • 477 просмотров
Решения вопроса 1
Думается вам нужно реализовать модель внутри которой будет boost multi_index в котором можно искать как в хеше по нескольким ключам. Статья про это на хабре уже конечно есть: habrahabr.ru/post/160009
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Не слишком понятно, чего вы хотите добиться. Можете привести пример кода, который иллюстрирует вашу проблему и пример того, как вы собираетесь её решить (пусть код не работает даже)? Возможно вы просто не верно работаете с моделью и представлением.

В любом случае, хэшу (обычному QHash) нельзя сделать два ключа.
Ответ написан
@DancingOnWater
Сделаете два Хэша, один обычный,а во втором в качестве зхначение - указатель на значение из второго
Ответ написан
PavelK
@PavelK Автор вопроса
Подумал, а что я голову ломаю с хранением номеров строк... они ведь всегда должны быть от 0 до N без пропусков.
А использую ка я для этого итератор... ведь можно к итератору прибавить значение и это будет аналогично переходу к нужной строке. Только отсюда вытекает единственная проблема - если в модели потребуется сделать перестановку строк, нужно как то изменить то, куда указывает итератор (и ключ и значение) .
да и find у QHash возвращает итератор.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы