可以通過插入順序循環QHash嗎?下面的方法似乎環哈希通過一些其他的因素:通過插入順序循環QHash
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
編輯:
我想這是不可能的,但QHash我應該怎麼用呢?
可以通過插入順序循環QHash嗎?下面的方法似乎環哈希通過一些其他的因素:通過插入順序循環QHash
QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
i.next();
qDebug() << i.key() << ": " << i.value();
}
編輯:
我想這是不可能的,但QHash我應該怎麼用呢?
從QHash文檔,
QHash是無序的,所以iterator的 順序不能假設 預見。如果排序的關鍵是需要 ,使用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
容器就無法達到您想要的效果。
如果你想迭代插入順序,爲什麼你不使用QList? – mbx 2011-08-29 09:54:17