Вопрос

Можно ли выпить 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 Только контейнер.

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