Вопрос

Что я должен использовать между qmap :: insludmulti и qmultimap, чтобы обработать:

2 -> abc
2 -> def
3 -> Ги
3 -> JKL

В чем разница введите 2 решения?

Это было полезно?

Решение

Чтение Классы контейнеров:

QMap<Key, T>
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative.

QMultiMap<Key, T>
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values.

Похоже, оба могут сделать работу. В этом документе есть также Алгоритмическая сложность Раздел, где вы можете видеть, что оба класса имеют ту же сложность.

я бы выбрал QMultiMap Просто для лучшего документа о том, что я собираюсь удерживать несколько ценностей с одним и тем же ключом.

Другие советы

Оба могут служить этой цели. Qmultimap на самом деле является подклассом Qmap.

Если вы готовы иметь несколько значений для одной клавиши, вы можете использовать: QMAP: для вставки Использование INSERTMULTI QMULTIMAP: для вставки использования вставки

Если вы готовы иметь одно значение для одного ключа, вы можете использовать: QMAP: для вставки использования INSERT QMULTIMAP: для вставки использования

Вы можете увидеть, что оба могут сервер и сервер оба. Но каждый имеет уникальное поведение по умолчанию, которое соответствует его названию. Кроме того, у каждого есть некоторые методы или операторы, которые удобны для одиночных / мульти.

Лучше выбирать тип в зависимости от вашей потребности. Это хорошая практика. Например, если вы используете QMAP для хранения однозначных значений нескольких значений, какой-то другой человек, который проходит через членов ваших классов, может создать впечатление, что вы готовы сохранить пары однозначного значения (из типа данных) аналогично, если вы используете Qmultimap Любой, кто читает определение, может получить представление о том, что данные будут иметь несколько значений для того же ключа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top