Qt中QMap和QMultimap使用
创始人
2025-05-30 21:46:15

Qt系列文章目录

文章目录

  • Qt系列文章目录
  • 前言
  • 一、实例
  • 二、QMultiMap使用
    • 1.初始化
    • 2.遍历
  • 注意
  • 工程下载

前言

QMap 是Qt的通用容器类之一。它存储(键,值) 对,并提供与键相关联的值的快速查找。其实就是一个键值对的集合,经常使用的。具体更详细还得看看帮助文档

QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)。

QMultiMap 是Qt的通用容器类之一。它继承至于QMap并扩展了QMap的功能,使其比QMap更适合存储多值映射。
QMultiMap 是一种允许多个值使用同一个键的map;QMap通常不允许这样做,除非你调用QMap::insertMulti()。
因为QMultiMap继承了QMap,所以QMap的所有功能也适用于QMultiMap。

QMap和QHash提供了非常相似的功能。区别在于:

QHash提供了比QMap更快的平均查找速度。
在遍历QHash时,元素的顺序是任意的。在QMap中,元素总是按键排序了的。
QHash的键类型必须提供==() 运算符和一个全局的QHash (key) 函数。QMap的键类型必须提供<运算符来指定总顺序。由于Qt 5.8.1,使用指针类型作为键也是安全的,即使底层运算符<() 没有提供总的顺序。

一、实例

1.常用的函数:

size() :Map的大小
empty():是不是空
key():这个第一个元素的键
keys():返回所有的键
values():返回所有的值

  1. 插入元素
    QMap map;
    要在map中插入一个(键,值) 对,可以使用 运算符:
	QMap map;map["one"] = "1";map["two"] = "2";map["three"] = "3";map.insert("four", "4");map.insert("five", "5");map.insert("six", "6");

这会将以下6个键值对插入到QMap中:(“one”, “1”) 、(“two”,“2” 和(“three”, “3”) 。
注意:map中的值是无序的

 foreach(const QString &key, map.keys())qDebug() << "key=" << key << ":" << "value=" << map.value(key);

在这里插入图片描述

map变量中并没有按1,2,3,4,5,6排序
3.遍历
如果想遍历存储在QMap中的所有键值对,可以使用迭代器。QMap提供了java风格的迭代器(QMapIterator和QMutableMapIterator) 和stl风格的迭代器(QMap::const_iterator和QMap::iterator) 。

QMapIterator iter(map) ;
while (iter.hasNext() )  {iter.next() ;cout << iter.key()  << ": " << iter.value()  << Qt::endl;
}

4.你也可以使用foreach:map中提取键值

二、QMultiMap使用

1.初始化

	QMultiMap multiMap;multiMap.insert("04", "0011_052322_151403_04_002_00001_00001_00.jpg");multiMap.insert("04", "0011_052322_151406_04_002_00001_00002_00.jpg");multiMap.insert("04", "0011_052322_151409_04_002_00001_00003_00.jpg");multiMap.insert("04", "0011_052322_151412_04_002_00001_00004_00.jpg");multiMap.insert("04", "1754_040821_111915_04_001_00001_00005_00.jpg");multiMap.insert("04", "1754_040821_111917_04_001_00001_00006_00.jpg");

2.遍历

foreach(const QString item, multiMap.uniqueKeys()){foreach(const QString value, multiMap.values(item)){qDebug() << "key=" << item << ":" << "value=" << value;}}

在这里插入图片描述

注意

1.map中的值是无序的,并不是先插入map的元素就一定排在前面
2…(at)返回值是常量,不允许替换

工程下载

源码下载

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...