Qt无序键值对

QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下:

QMap<T1,T2> map1

T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且QMap具有自动排序功能,对输入的键进行排序。 Qt的键值对容器都是自带排序的,直接上代码

#include <QMap> int main(int argc, char *argv[]) { QMap<int,QString> map; map.insert(3,”map3″); map.insert(1,”map1″); map.insert(2,”map2″); map.insert(6,”map6″); map.insert(4,”map4″); map.insert(5,”map5″); map.insert(8,”map8″); map.insert(7,”map7″); map.insert(11,”map11″); map.insert(9,”map9″); map.insert(10,”map10″); for (auto i = map.begin();i != map.end();i++) { std::cout << “key:” << i.key() << “value:” << i.value().toStdString() << “\n”; } return 0; }

运行结果:Qt无序键值对 存储map时顺序是打乱的,但是打印结果是顺序的,这是因为QMap是有序容器,数据存储后会被自动排序,但有时候我们想要无序的键值对。 无序键值对:QList<QPair<type,type>>

#include <QList> #include <QMap> int main(int argc, char *argv[]) { QList<QPair<int,QString>> map; map.append(QPair<int,QString>(2,”map2″)); map.append(QPair<int,QString>(1,”map1″)); map.append(QPair<int,QString>(4,”map4″)); map.append(QPair<int,QString>(3,”map3″)); map.append(QPair<int,QString>(7,”map7″)); map.append(QPair<int,QString>(5,”map5″)); map.append(QPair<int,QString>(6,”map6″)); map.append(QPair<int,QString>(9,”map9″)); map.append(QPair<int,QString>(8,”map8″)); map.append(QPair<int,QString>(11,”map11″)); map.append(QPair<int,QString>(10,”map10″)); foreach (auto i, map) { std::cout << “key:” <<i.first << “value:” << i.second.toStdString() << “\n”; } // QMap<int,QString> map; // map.insert(3,”map3″); // map.insert(1,”map1″); // map.insert(2,”map2″); // map.insert(6,”map6″); // map.insert(4,”map4″); // map.insert(5,”map5″); // map.insert(8,”map8″); // map.insert(7,”map7″); // map.insert(11,”map11″); // map.insert(9,”map9″); // map.insert(10,”map10″); // for (auto i = map.begin();i != map.end();i++) { // std::cout << “key:” << i.key() << “value:” << i.value().toStdString() << “\n”; // } return 0; }
<

运行结果: Qt无序键值对 运行结果与存储顺序相同

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Qt无序键值对 https://www.yhzz.com.cn/a/14223.html

上一篇 2023-05-12
下一篇 2023-05-12

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。