37-深度解析 QMap 与 QHash

1. QMap深度解析

  • QMap 是一个以升序键顺序存储键值对的数据结构
  • QMap 原型为 class QMap<K,T> 模板
  • QMap 中的键值对根据 key 进行了排序
  • QMap 中的 key 类型必须重载 operator <
  • QMap的注意事项
    • 通过 Key 获取 value 时,当 Key 存在时返回对应的 Value,当 Key 不存在时返回值类型所对应的 “零” 值
    • 插入键值对时,当 Key 存在时更新 Value 的值,当 Key 不存在时插入新的键值对
  • QMap使用范例

2. QHash深度解析

  • QHash 是 QT 中的哈希数据结构
  • QHash 原型为 class QHash<K,T> 模板
  • QHash 中的键值对在内部无序排列
  • QHash 中的 Key 类型必须重载 operator ==
  • QHash 中的 Key 对象必须重载全局哈希函数 qHash()
  • QHash使用范例

3. QMap和QHash对比分析

  • QHash 的查找速度明显快于 QMap
  • QHash 占用的存储空间明显多于 QMap
  • QHash 以任意的方式存储元素
  • QMap 以 Key 顺序存储元素
  • QHash 的键类型必须提供 operator ==() 和 qHash() 函数
  • QMap 的键类型必须提供 operator<() 函数

4. NotePad项目改进

  • 当我们保存一个文件时,如果没有写后缀,当前项目不会为我们添加上后缀,这是很不友好的
  • NotePad项目改进

5. 总结

  • QT 中提供了用于存储键值对的类模板
  • QHash 和 QMap 遵循相同的使用接口
  • QHash 的查找速度快于 QMap
  • QMap 需要的内存空间低于 QHash
  • QHash 对于 Key 类型的要求高于 QMap
发布了73 篇原创文章 · 获赞 31 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/105710898