码迷,mamicode.com
首页 > 其他好文 > 详细

QMap 与 QHash

时间:2018-06-06 23:54:26      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:microsoft   ash   一个   ems   子类   数组   lis   函数   hash   

  Qt提供的关联容器,QMap、QMultiMap,QHash、QMultiHash和QSet,带有“Multi”字样的容器支持在一个键上面关联多个值。

“Hash”容器提供了基于散列函数的更快的查找,而非 Hash 容器则是基于二分搜索的有序集合。

一、QMap、QMultiMap  

  QMap<Key, T>:提供了字典数据结构(关联数组),将类型 T 的值同类型 Key 的键关联起来。通常,每个键与一个值关联。QMap 以键的顺序存储数据;如果顺序无关,

QHash 提供了更好的性能。

  QMultiMap<Key, T>:这是 QMap 的子类,提供了多值映射:一个键可以与多个值关联。

二、QHash、QMultiHash

  QHash<Key, T>:该类同 QMap 的接口几乎相同,但是提供了更快的查找。QHash 以字母顺序存储数据。

  QMultiHash<Key, T>:这是 QHash 的子类,提供了多值散列。  

  所有的容器都可以嵌套。例如,QMap<QString, QList<int> > 是一个映射,其键是 QString 类型,值是 QList<int> 类型,也就是说,每个值都可以存储多个 int。

这里需要注意的是,C++ 编译器会将连续的两个 > 当做输入重定向运算符,因此,这里的两个 > 中间必须有一个空格。

三、区别

  ① QHash 提供比QMap 更快的查询。

  ② 当使用迭代器遍历一个QHash, 项目(items)是任意指定的;而对于QMap,项目(items)是通过键(key)来分类。

  ③ QHash 键(key)的类型必须支持 运算符== { operator==() }和 一个全局的qHash(Key)函数;而对于QMap必须使用运算符< { operator<() }指定总的顺序。

QMap 与 QHash

标签:microsoft   ash   一个   ems   子类   数组   lis   函数   hash   

原文地址:https://www.cnblogs.com/jiangson/p/9147760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!