文章目录

  • 1.简介
  • 2.使用示例
  • 3.解析

1.简介

QMap<Key, T>:
它提供了一个字典(关联数组),将Key类型的键值映射到T类型的值上。一般每一个键关联单一的值。QMap使用键顺序来存储它的数据;如果不关心存储顺序,那么可以使用QHash来代替它,因为QHash速度更快。

QMultiMap<Key, T>:
它是QMap的一个便捷类,提供了实现多值映射的接口函数,例如一个键可以关联多个值。

2.使用示例

#include <QCoreApplication>
#include <QMap>
#include <QMultiMap>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QMap<QString, int> map;map["one"] = 1;          // 向map中插入("one",1)map["three"] = 3;map.insert("seven", 7);   // 使用insert()函数进行插入// 获取键的值,使用“[ ]”操作符时如果map中没有该键,那么会自动插入int value1 = map["six"];qDebug() << "value1:" << value1;qDebug() << "contains 'six' ?" << map.contains("six");// 使用value()函数获取键的值,这样当键不存在时不会自动插入int value2 = map.value("five");qDebug() << "value2:" << value2;qDebug() << "contains 'five' ?" << map.contains("five");// 当键不存在时,value()默认返回0,这里可以设定该值,比如这里设置为9int value3 = map.value("nine", 9);qDebug() << "value3:" << value3;// map默认是一个键对应一个值,如果重新给该键设置了值,那么以前的会被擦除map.insert("ten", 10);map.insert("ten", 100);qDebug() << "ten: " << map.value("ten");// 可以使用insertMulti()函数来实现一键多值,然后使用values()函数来获取值的列表map.insertMulti("two", 2);map.insertMulti("two", 4);QList<int> values = map.values("two");qDebug() << "two: " << values;// 也可以使用QMultiMap类来实现一键多值QMultiMap<QString, int> map1, map2, map3;map1.insert("values", 1);map1.insert("values", 2);map2.insert("values", 3);// 可以进行相加,这样map3的“values”键将包含2,1,3三个值map3 = map2 + map1;QList<int> myValues = map3.values("values");qDebug() << "the values are: ";for (int i=0; i<myValues.size(); ++i) {qDebug() << myValues.at(i);}return a.exec();
}

3.解析

  • 插入键值对
    QMap<QString, int> map;map["one"] = 1;          // 向map中插入("one",1)map["three"] = 3;map.insert("seven", 7);   // 使用insert()函数进行插入
  • 获取键值[]
    // 获取键的值,使用“[ ]”操作符时如果map中没有该键,那么会自动插入int value1 = map["six"];qDebug() << "value1:" << value1;qDebug() << "contains 'six' ?" << map.contains("six");
  • 获取键值value()
    // 使用value()函数获取键的值,这样当键不存在时不会自动插入int value2 = map.value("five");qDebug() << "value2:" << value2;qDebug() << "contains 'five' ?" << map.contains("five");
  • value() 设定值
    // 当键不存在时,value()默认返回0,这里可以设定该值,比如这里设置为9int value3 = map.value("nine", 9);qDebug() << "value3:" << value3;
  • insert()插入值
    // 当键不存在时,value()默认返回0,这里可以设定该值,比如这里设置为9int value3 = map.value("nine", 9);qDebug() << "value3:" << value3;
  • insertMulti()一键多值
    // 可以使用insertMulti()函数来实现一键多值,然后使用values()函数来获取值的列表map.insertMulti("two", 2);map.insertMulti("two", 4);QList<int> values = map.values("two");qDebug() << "two: " << values;
  • QMultiMap 一键多值
    // 也可以使用QMultiMap类来实现一键多值QMultiMap<QString, int> map1, map2, map3;map1.insert("values", 1);map1.insert("values", 2);map2.insert("values", 3);
  • 获取 QMultiMap 值
    // 可以进行相加,这样map3的“values”键将包含2,1,3三个值map3 = map2 + map1;QList<int> myValues = map3.values("values");qDebug() << "the values are: ";for (int i=0; i<myValues.size(); ++i) {qDebug() << myValues.at(i);}

QT QMap QMultiMap使用说明相关推荐

  1. [QT] QMap使用详解

    [QT] QMap使用详解 引言 ​ QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快.QMap中的数据都是成对出现的,第一个称为key(键),第二 ...

  2. QT的QMultiMap类的使用

    详细说明 QMultiMap类是提供多值地图的便捷QMap子类. QMultiMap <Key,T>是Qt的通用容器类之一.它继承了QMap并扩展了一些便利功能,使其比QMap更适合于存储 ...

  3. Qt qmap中嵌套qmap

    一.定义了两个qmap QMap<int, QMap <QUrl, QPushButton *>> maparray;//第一个button里面套了第二个小button QMa ...

  4. qt中QMultiMap获取键值

    概述 QMultiMap获取键值分为两种,一种是获取所有的键值,包含重复的键值,一种是获取不重复的键值,下面记录一下. 1.获取键值 使用函数values(). QMultiMap<int,st ...

  5. Qt excel 操作使用说明

    一.简单介绍 QAxObject是Qt提供的包装COM组件的类,通过COM通过COM操作使用QAxObject类,使用此类,需要在pro文件中添加 QT += axcontainer 二.与excel ...

  6. QT中QMap使用实例详解

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

  7. 使用qt的qtcore库怎么包含_GitHub - coologic/QtCoreExamples: QtCore模块相关类库范例

    QtCoreExamples QtCore模块相关类库范例 QJsonExample Qt进行Json文件读写范例 QXmlExample Qt使用QXmlStreamReader/QXmlStrea ...

  8. Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)

     Introduction Qt库提供了一组基于模板的一般化的容器类.这些容器可以存储指定的类型的元素.例如,如果你需要一个可变大小的Qstring数组,可以用QVector<QString ...

  9. Day2 QT常用基础类型(自用)

    1. 基础类型 因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型. QT基本数据类型定 ...

最新文章

  1. 基于IndexedDB实现简单文件系统
  2. 前端也能玩转机器学习?Google Brain 工程师来支招
  3. Java机器学习库ML之十一线性SVM
  4. powerbi和python区别_PowerBI和Python关于数据分析的对比
  5. gbdt如何处理多分类问题(multiclass,cart)
  6. 让193FW显示1440x900还真不容易
  7. Oracle中过程/函数返回结果集
  8. 高内聚,低耦合——8大核心中间件,微服务基础技术栈技术图谱
  9. hadoop 自定义分区
  10. “模板”学习笔记(7)-----数组模板+对象数组举例
  11. 宅在家里写数据库中DML(增删改)
  12. [zz]基于libvirt API监测xen初探
  13. 如何快速把kux格式转换成mp4
  14. 打开 .mpp文件的一种方法
  15. 关于烂代码的那些事(下)
  16. Windows AppLocker被绕过:攻击者可不提权联网注入DLL
  17. python库numpy使用技巧(一)——提取数组中非零元素
  18. 阿里云数据湖分析急招实习生
  19. mysqldump命令备份数据 mysql备份数据
  20. CHAR,NCHAR,VARCHAR,NVARCHAR

热门文章

  1. 来自北大算法课的Leetcode题解:459. 重复的子字符串
  2. Rest ful风格同时传输一个对象和一个变量的几种方法
  3. 美国散户从90降到6他们是如何被消灭的
  4. 【甘道夫】conda及pip公司内网无法使用
  5. 资源:JDK1.8的版本百度网盘自提,并解决配置 java 环境的问题;
  6. sklearn学习笔记4:聚类算法 K-Means
  7. windows 10 中文乱码的解决
  8. YII2前端资源Assets
  9. OrCAD error Subcircuit xxx used by X_U1 is undefined
  10. HashMap之containsKey