QHash 跟 QMap的再次提问。
QHash 和 QMap的再次提问。。。。
QHash或者QMap如何实现这样的功能:
以某种顺序依次insert <key,value>
然后用迭代依次取出key和value
QMapIterator<QString, int> i(map);
while (i.hasNext()) {
i.next();
cout << i.key() << ": " << i.value() << endl;
}
使得key和value的顺序,和insert的顺序一样。。。
PS:QMap通过insert后,会按照关键字的值,进行顺序排列,所以取出来的值,key是从小到大的。。。
QHash 取出来的key有时候有序,有时候无序。。。
------解决方案--------------------
为何不直接使用QVector或std::vector?
随手写一个
QHash或者QMap如何实现这样的功能:
以某种顺序依次insert <key,value>
然后用迭代依次取出key和value
QMapIterator<QString, int> i(map);
while (i.hasNext()) {
i.next();
cout << i.key() << ": " << i.value() << endl;
}
使得key和value的顺序,和insert的顺序一样。。。
PS:QMap通过insert后,会按照关键字的值,进行顺序排列,所以取出来的值,key是从小到大的。。。
QHash 取出来的key有时候有序,有时候无序。。。
------解决方案--------------------
为何不直接使用QVector或std::vector?
随手写一个
- C/C++ code
std::vector<std::pair<QString, int> > collection; ..... ..... ..... for(auto const &data : collection) qDebug() << data.first << ", " << data.second;
------解决方案--------------------
QHash或者QMap设计之初就不是用来排序的