QT QMap QMultiMap使用说明
文章目录
- 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使用说明相关推荐
- [QT] QMap使用详解
[QT] QMap使用详解 引言 QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快.QMap中的数据都是成对出现的,第一个称为key(键),第二 ...
- QT的QMultiMap类的使用
详细说明 QMultiMap类是提供多值地图的便捷QMap子类. QMultiMap <Key,T>是Qt的通用容器类之一.它继承了QMap并扩展了一些便利功能,使其比QMap更适合于存储 ...
- Qt qmap中嵌套qmap
一.定义了两个qmap QMap<int, QMap <QUrl, QPushButton *>> maparray;//第一个button里面套了第二个小button QMa ...
- qt中QMultiMap获取键值
概述 QMultiMap获取键值分为两种,一种是获取所有的键值,包含重复的键值,一种是获取不重复的键值,下面记录一下. 1.获取键值 使用函数values(). QMultiMap<int,st ...
- Qt excel 操作使用说明
一.简单介绍 QAxObject是Qt提供的包装COM组件的类,通过COM通过COM操作使用QAxObject类,使用此类,需要在pro文件中添加 QT += axcontainer 二.与excel ...
- QT中QMap使用实例详解
QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快.QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值). 目录 实例化 ...
- 使用qt的qtcore库怎么包含_GitHub - coologic/QtCoreExamples: QtCore模块相关类库范例
QtCoreExamples QtCore模块相关类库范例 QJsonExample Qt进行Json文件读写范例 QXmlExample Qt使用QXmlStreamReader/QXmlStrea ...
- Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)
Introduction Qt库提供了一组基于模板的一般化的容器类.这些容器可以存储指定的类型的元素.例如,如果你需要一个可变大小的Qstring数组,可以用QVector<QString ...
- Day2 QT常用基础类型(自用)
1. 基础类型 因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型. QT基本数据类型定 ...
最新文章
- 基于IndexedDB实现简单文件系统
- 前端也能玩转机器学习?Google Brain 工程师来支招
- Java机器学习库ML之十一线性SVM
- powerbi和python区别_PowerBI和Python关于数据分析的对比
- gbdt如何处理多分类问题(multiclass,cart)
- 让193FW显示1440x900还真不容易
- Oracle中过程/函数返回结果集
- 高内聚,低耦合——8大核心中间件,微服务基础技术栈技术图谱
- hadoop 自定义分区
- “模板”学习笔记(7)-----数组模板+对象数组举例
- 宅在家里写数据库中DML(增删改)
- [zz]基于libvirt API监测xen初探
- 如何快速把kux格式转换成mp4
- 打开 .mpp文件的一种方法
- 关于烂代码的那些事(下)
- Windows AppLocker被绕过:攻击者可不提权联网注入DLL
- python库numpy使用技巧(一)——提取数组中非零元素
- 阿里云数据湖分析急招实习生
- mysqldump命令备份数据 mysql备份数据
- CHAR,NCHAR,VARCHAR,NVARCHAR