Вопрос
Можно ли выпить QHash по заказу вставки? Способ ниже, кажется, петлю хэш каким-то другим фактором:
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
РЕДАКТИРОВАТЬ:
Я подумал, что это было невозможно с QHash, но что я должен вместо этого использовать?
Решение
От Qhash. документация,
QHASH неупорядован, так Последовательность итератора не может быть предсказуемой. Отказ Если требуется заказ по ключу, используйте Qmap
Так что, это невозможно.
Если вы хотите заказа на основе ключей, используйте QMap
вместо..
Надеюсь, поможет..
Редактировать:
если ты нет нужно Key
а также Value
Логическое отображение и только их ценности, вы можете использовать
QList<QPair<QString,QString>> pairs;
Например:
Первое значение может быть получено
QString firstValue = pairs.at(0).first;
Точно так же для второго значения в QPair,
QString secondValue = pairs.at(0).second;
И вы можете повторить QList
Чтобы получить элементы в вставленном порядке..
Другие советы
QHash
не помнит ваш заказ вставки. Он предназначен для быстрой случайного доступа. Заказ, который вы получаете с итератором, является произвольным.
если ты Только Вставить элементы (без удаления элемента) в QHash
Вы можете использовать массив / список параллельно. Это не очень элегантное решение, но то, что вы хотите, не может быть достигнуто с QHash
Только контейнер.