有时候想要获得可以按顺序读写的键值对,此时QMap和QHash并不能够满足我们需求
QMap map;
map.insert(7,8);
map.insert(9,5);
map.insert(8,7);
QHash hash;
hash.insert(7,8);
hash.insert(9,5);
hash.insert(8,7);
cout << "QMap<>:" << endl;
cout << map.keys().at(0) <<"," << map.values().at(0) << endl
<< map.keys().at(1) <<"," << map.values().at(1) << endl
<< map.keys().at(2) <<"," << map.values().at(2) << endl;
cout << "QHash<>:" << endl;
cout << hash.keys().at(0) <<"," << hash.values().at(0) << endl
<< hash.keys().at(1) <<"," << hash.values().at(1) << endl
<< hash.keys().at(2) <<"," << hash.values().at(2) << endl;
QMap<>:
7,8
8,7
9,5
QHash<>:
9,5
7,8
8,7
QMap<>:
7,8
8,7
9,5
QHash<>:
8,7
7,8
9,5
QMap<>:
7,8
8,7
9,5
QHash<>:
8,7
9,5
7,8
可以看到
QMap 按任意顺序插入QMap,重复实验,Qmap都会根据Key自动排序
QHash 按任意顺序插入QHash,重复实验,QHash随机顺序
采用用QPair,并与QList或者QVector嵌套
QList
> QVector
>
QList> listPair;
listPair.append(make_pair(7,8));
listPair.append(make_pair(9,5));
listPair.append(make_pair(8,7));
QVector> vecPair;
vecPair.append(make_pair(7,8));
vecPair.append(make_pair(9,5));
vecPair.append(make_pair(8,7));
cout << "QList>:" << endl;
cout << listPair.at(0).first <<"," << listPair.at(0).second << endl
<< listPair.at(1).first <<"," << listPair.at(1).second << endl
<< listPair.at(2).first <<"," << listPair.at(2).second << endl;
cout << "QVector>:" << endl;
cout << vecPair.at(0).first <<"," << vecPair.at(0).second << endl
<< vecPair.at(1).first <<"," << vecPair.at(1).second << endl
<< vecPair.at(2).first <<"," << vecPair.at(2).second << endl;
QList>:
7,8
9,5
8,7
QVector>:
7,8
9,5
8,7
QList>:
7,8
9,5
8,7
QVector>:
7,8
9,5
8,7
参考链接:
QMap,QHash插入后的显示顺序以及记录插入顺序的数据结构_qhash排序_想飞的兔子呀的博客-CSDN博客
QPair 的用法_qpair用法_艾米莉亚糖的博客-CSDN博客