zoukankan      html  css  js  c++  java
  • QMap 与 QHash

      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<() }指定总的顺序。

  • 相关阅读:
    Matlab曲面拟合和插值
    插值(scipy.interpolate)
    坐标系旋转后的点坐标、坐标点旋转后的点坐标
    halcon相机标定及图像矫正
    别再问我们用什么画图的了!问就是excalidraw
    Windows下如何玩转火热的go-zero
    我用go-zero开发了第一个线上项目
    Java基础差,需要怎么补
    2019-给你六个建议
    简说Java线程的那几个启动方式
  • 原文地址:https://www.cnblogs.com/jiangson/p/9147760.html
Copyright © 2011-2022 走看看