首页 > 技术知识 > 正文

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无序键值对1 运行结果与存储顺序相同

猜你喜欢