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()以使内存减到最小。


好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***