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

  • 相关阅读:
    could not read data from '/Users/lelight/Desktop/ViewControllerLife/ViewControllerLife/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.
    NSNotification 消息通知的3种方式
    按钮点击播放音效
    字符串变枚举变量
    Flutter的使用教学笔记
    UI控件的位置
    博客园大佬主页跳转
    retain, copy, assign区别
    OC自定义文档头部注释
    OC语言自定义打印
  • 原文地址:https://www.cnblogs.com/jiangson/p/9147760.html
Copyright © 2011-2022 走看看