QMap的基本使用

菜鸟操作:QString和QMap转化(QMap嵌套QMap) 将QMap中的数据全都放到QString中,包括符号,我这里使用大括号来代替原本的小括号(因为我太怀念python的字典了),用中文的双引号代替原本英文的双引号,这样就实现从QMap到QString的转换;从QString到QMap,其实主要是字符串的解析,难就难在要找到子字符串的起始下标和结束下标,这个简单推导一下就行了 阅读详情

1. 基本应用
下面以“键-值”都是QString的例子说明QMap的基本使用方法。

#include <qmap.h>
#include <iostream>
using namespace std;

class MapTest
{
public:
    void showMap()
    {
if(!m_map.isEmpty()) return; //判断map是否为空

m_map.insert(“111″, “aaa”); //向map里添加一对“键-值”

if(!m_map.contains(“222″)) //判断map里是否已经包含某“键-值”
     m_map.insert(“222″, “bbb”);

m_map["333"] = “ccc”; //另一种添加的方式
qDebug(“map[333] , value is : ” + m_map["333"]); //这种方式既可以用于添加,也可以用于获取,但是你必须知道它确实存在

if(m_map.contains(“111″)){
     QMap<QString,QString>::iterator it = m_map.find(“111″); //找到特定的“键-值”对
     qDebug(“find 111 , value is : ” + it.data()); //获取map里对应的值
}

cout<< endl;

qDebug(“size of this map is : %d”, m_map.count()); //获取map包含的总数

cout<< endl;

QMap<QString,QString>::iterator it; //遍历map
for ( it = m_map.begin(); it != m_map.end(); ++it ) {
            qDebug( “%s: %s”, it.key().ascii(), it.data().ascii()); //用key()和data()分别获取“键”和“值”
        }

m_map.clear(); //清空map
    }
private:
    QMap<QString,QString> m_map; //定义一个QMap对象
};
调用类函数showMap(),显示结果:
map[333] , value is : ccc
find 111 , value is : aaa

size of this map is : 3

111: aaa
222: bbb
333: ccc

======================================================
2. 对象的使用

map当中还可以保存类对象、自己定义类对象。

例子如下(摘自QT帮助文档《Qt Assistant》,更详细的说明参考之):

#include <qstring.h>
#include <qmap.h>
#include <qstring.h>

//自定义一个Employee类,包含fn、sn、sal属性
class Employee
{
public:
    Employee(): sn(0) {}
    Employee( const QString& forename, const QString& surname, int salary )
        : fn(forename), sn(surname), sal(salary)
    { }

    QString forename() const { return fn; }
    QString surname() const { return sn; }
    int salary() const { return sal; }
    void setSalary( int salary ) { sal = salary; }

private:
    QString fn;
    QString sn;
    int sal;
};

int main(int argc, char **argv)
{
    QApplication app( argc, argv );

    typedef QMap<QString, Employee> EmployeeMap; //自定义一个map类型,值为EmployeeMap对象
    EmployeeMap map;

    map["JD001"] = Employee(“John”, “Doe”, 50000); //向map里插入键-值
    map["JW002"] = Employee(“Jane”, “Williams”, 80000);
    map["TJ001"] = Employee(“Tom”, “Jones”, 60000);

    Employee sasha( “Sasha”, “Hind”, 50000 );
    map["SH001"] = sasha;
    sasha.setSalary( 40000 ); //修改map值的内容,因为map采用值传递,所以无效

    //批量打印
    EmployeeMap::Iterator it;
    for ( it = map.begin(); it != map.end(); ++it ) {
        printf( “%s: %s, %s earns %d/n”,
                it.key().latin1(),
                it.data().surname().latin1(),
                it.data().forename().latin1(),
                it.data().salary() );
    }
    return 0;
}

Program output:
JD001: Doe, John earns 50000
JW002: Williams, Jane earns 80000
SH001: Hind, Sasha earns 50000
TJ001: Jones, Tom earns 60000


超越C++原创文章,转载请注明来源并保留原文链接

本文链接:http://www.beyondc.cn/qmap-use.html

QMap多线程读写存在的问题分析 Qt的单列集合和双列集合在多线程并行访问时有很大的不同之处。单列集合可以多线程并行读写而无需加锁(不考虑数据同步的情况下),而双列集合,例如QMap,如果不加锁进行多线性并行读写会出现内存冲突访问的问题,不加锁的情况下只能并行读。下面本文就对QMap在多线程并行读写访问时可能存在内存冲突的情况进行实验验证,最后给出用互斥锁的方案进行解决的方法。 第一步,构造可用于多线程并行访问的全局数据,以类的... 阅读详情

相关推荐

QT QMap数据到本地文件,使数据持久化

1.写数据到本地文件 //写数据到本地文件 QMap<QString,QString> mapData; mapData.insert("Baidu","www.baidu.com"); mapData.insert("Apple","www.apple.com"); QMapIterator<QString, QString> i(mapData); QFile file("data.log"); file.open.

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 3015

QMap的使用

1. 基本应用下面以“键-值”都是QString的例子说明QMap的基本使用方法。#include #include using namespace std;class MapTest{public:    void showMap()    {if(!m_map.isEmpty()) return; //判断map是否为空m_map.insert(“111″, “aaa”); //向

stilling2006的专栏 2万+

Blender - Shrinkwrap - 更方便的制作贴合模型的表面来建模

Shrinkwrap 修改器 使用 Blender 想要快速建模可以贴合现有模型表面的效果:衣服、皮肤、等效果,可以使用 Shrinkwrap 修改器,这个修改器的名字其实按照英文上的理解,翻译为:收缩的包裹效果 应用 如这块铁皮,它要贴合机身弯曲的效果,可以先建好一个铁皮,再 Shrinkwrap 到一个指定的网格上 留意的参数 Target 要贴合的对象(目前我已知是可以贴合到网格对象上,实在是方便) VertexGroup 顶点组,和之前讲到过的,顶点组可以组设顶点的权重,意思这个可.

Jave.Lin 的学习笔记 6070

QT QMap 使用方法实例

QT QMap 使用方法,直接上例子,请仔细体会。

www.linuxkiss.com 你可以精通一门IT技术 3万+

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 420

数字通信:信源编码、信道编码、调制、物理信道、解调、信道解码、信源解码

在通信系统中,信息的传输通常需要经过一系列的处理步骤,确保数据可以在信道中高效且可靠地传输。以下是信源编码、信道编码、调制、物理信道、解调、信道解码、信源解码的具体含义及其常见技术的解释。

weixin_44012667的博客 4808

QMap详解

QMap详解 QMap是Qt的一个模板类,它是基于红黑树算法的一套字典。 QMap<Key,T>是Qt容器类型的一种,它通过(Key, value)存储一对值,并通过Key可以查找与之关联的value的值。 QMap和 QHash是很相似的,不同的地方是: QHash的查找速度比QMap要快很多。 在对QHash进行迭代时,这些项是任意排序的。在QMap中,项总是按键排序。 QHash的关键类型必须提供运算符==()和全局QHash(key)函数。QMap的关键类型必须提供操作符<(

qq_21291397的博客 4万+

模型算力需求估算

(Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。

形上得其象,形下合于数;阴阳自济,玄理自明。 8953

QMap使用详解

在这个示例中,我们创建了一个 QMap 对象来存储人名和年龄的映射,然后展示了如何插入、访问、修改、检查键是否存在,以及如何获取所有键和值。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)。打印输出: QMap((“English”, 99)(“math”, 100))注意:这一点与STL中得map不同,在STL中,map对象是不允许有多个相同键的。实现的,它能够提供近似常数时间复杂度`(O(1))的查找、插入和删除操作。是一个模板类,这意味着你可以指定键和值的类型。

KodeScape 2808

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的远距离停车位检测系统(深度学习代码+UI界面+训练数据集)

本文详细介绍了基于YOLOv5/YOLOv6/YOLOv7/YOLOv8深度学习模型的远距离停车位检测系统的完整实现方案。该系统能够准确识别200米范围内的停车位状态,为智能停车场管理系统、自动驾驶车辆提供关键的视觉感知能力。文章涵盖算法原理、数据集构建、模型训练、系统实现及优化策略,并提供完整的代码实现和UI界面设计。关键词:YOLO系列,深度学习,停车位检测,计算机视觉,智能交通系统pythonimport cv2import os"""创建数据存储目录""""""定时采集图像"""

YOLO 186

YOLOv8车辆碰撞识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

随着我国汽车保有量的持续攀升,道路交通事故数量居高不下,车辆碰撞损伤的快速、精准评估已成为交通安全管理、保险理赔定损以及汽车后市场服务中的关键环节。传统的人工目视查验方法高度依赖评估人员的专业经验,不仅主观性强、效率低下,而且在复杂光照、多角度遮挡等真实场景下难以保证评估的一致性和可复现性。计算机视觉与深度学习技术的迅猛发展,为目标检测任务提供了强有力的技术支撑,使得基于视觉的车辆损伤自动化识别成为可能。

斌擎科技 129

[QT] QMap使用详解

[QT] QMap使用详解 一. 目录 1. 实例化QMap对象 2. 插入数据 3. 移除数据 4. 遍历数据 5. 由键查找对应键值 6. 由键值查找键 7. 修改键值 8. 查找是否包含某个键 9. 获取所有的键和键值 10. 一个键对应多个值 1. 实例化QMap对象 /* 创建QMap实例, 第一个参数为QString类型的键,第二个参数为int类型的值 */ QMap<QString, int> map; 2. 插入数据 /* 插入数据 两种方式*/

qq_39295354的博客 6万+

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

QMap使用

如果你想使用自定义的类或结构体作为QMap提供拷贝构造函数。提供重载的,因为QMap需要用它来排序。(可选,但建议)提供重载的。示例:使用自定义结构体作为键cppint id;// 必需的 operator<if (id!// 如果id相等,再用name比较// 可选的,但很有用的 operator==// 现在可以使用 MyKey 作为 QMap 的键if (myMap.contains({1, "Alice"})) { // 需要 operator==

深之JohnChen的专栏 1305

数据库系统概论第五版课后习题答案第十二章

对元组的插入、删除、修改;语义检查的具体做法是,DBMS读取数据字典,检查是否存在与该语句中的表、视图或索引等要创建的对象相同的对象名,检查该用户是否具有创建数据库对象的权限。答:操作系统提供的封锁机制和DBMS的封锁机制在封锁对象、封锁对象的状态、封锁的粒度、及封锁的类型上存在很大的差别,操作系统的封锁机制不能直接应用在DBMS中,DBMS必须重新设计,来满足复杂的封锁需求。数据库的建立和维护包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能监测分析等功能。

wenling54321的博客 693

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

QMap

QMap QMap是Qt容器类型的一种,它通过(Key, value)存储一对值,并通过Key可以查找与之关联的value的值。 QMap和QHash是很相似的,不同的地方是: - QHash的查找速度比QMap要快很多。 - 在对QHash进行迭代时,这些项是任意排序的。在QMap中,项总是按键排序。 - QHash的关键类型必须提供运算符==()和全局QHash(key)函数。QMa

Q男 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Qt中QMap的简单说明及使用

QMap的说明 QMap属于Qt中的一种类型,使用者可以存储一对值(Key,value),以此便可通过Key来找到与其对应的值value。 我觉得说简单点其实就是将值value与Key相互关联、一一对应。两个值可以是相同类型或者是不同类型,通过Map来将二者联系。 一些简单的使用方法 首先先将Key和value值添加进去 QMap<QString,int> m_Map; //将value中的值插入至Key中的方法如下所示: m_Map[“KeyType1”]=658; m_Map[“KeyTy

weixin_38516302的博客 4748

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

QMap 使用详解

QT开发之路系列文章,主要目标快速学习、完善、提升 相关技能 高效完成企业级项目开发 分享在企业中积累的实用技能和经验。通过具体的编码过程、代码示例、步骤详解、核心内容和展示的方法解决遇到的实际问题。转载请附上文章出处与本文链接。QMap 是 Qt 框架中提供的一种关联容器类,用于存储键值对(key-value pairs)。它是一个有序的字典,允许通过键快速查找对应的值。QMap 是基于红黑树实现的,因此它的键是有序的,并且支持高效的插入、删除和查找操作。

断点 2781
上一篇: 面向对象的js--参考资料
下一篇: 再次看到HTML5所想到的
aT阿汤
博客等级 码龄18年 13粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值