4.3 关联容器
好文章,来自【福优学苑@音视频+流媒体】
4.3 关联容器
三种:QSet,QMap,QHash
QSet<T>
它提供一个键值对集合,可以快速的进行查找,
Key:value
(1, “apple”)
(2, “banana”)
QMap<Key, T> QMultiMap<Key, T>
QMap是一个以升序键顺序存储键值对的数据结构,QMultiMap是QMap基础上提供可以存储多值的maps,这样就是说一个键对应多个值了。
下面是创建一个QString-int的maps
QMap<QString, int> map;
可以这样插入值
map["one"] = 1;
map["three"] = 3;
map["seven"] = 7;
也可以这样:
map.insert("twelve", 12);
查询一个值使用[] 或者value(“**”)
int num1 = map["thirteen"];
int num2 = map.value("thirteen");
查询是否存在一个值:
if (map.contains("TIMEOUT"))
timeout = map.value("TIMEOUT");
一般推荐使用contains() value()而不是[]。
QHash<Key, T> QMultiHash<Key, T>
QHash<Key, T>是个在哈希表中存储键值对的结构。
它的接口几乎和QMap相同,但它提供了更快的查找功能。
QHash为它的内部哈希表自动分配最初的存储区域,并在有项被插入或者删除时重新划分所分配的区域大小。
也可以调用reserve()或者squeeze()来指定或者压缩希望存储到哈希表的项的数目,以进行性能调整。
通常的做法是利用我们预期的最大的项的数目来调用reserve(),然后插入数据,最后如果有多出的项,则调用squeeze()以使内存减到最小。
好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***