当前位置: 首页 > news >正文

Qt 2 QMapQHashQVector类实例

1. QMap

   // 1:QMap的使用// 创建一个QMap 实例 key 为 QString value 为 intQMap<QString,int> Grade;// 插入方式有两种插入方式// 1.map[key] = valueGrade["语文"] = 90;Grade["数学"] = 120;// 2.map.insert(key,value);Grade.insert("英语",89);// 删除keyGrade.remove("语文");qDebug() << Grade ;// 普通打印qDebug() << Grade ;// 循环打印Map// 1.通过迭代器实现 (java类型实现)QMapIterator<QString,int> itr(Grade);// while循环输出while (itr.hasNext()){itr.next();qDebug() << itr.key() << itr.value();}qDebug() << endl;// 2.STL类型迭代器QMap<QString,int>::const_iterator stl_itr = Grade.constBegin();while(stl_itr != Grade.constEnd()){qDebug() << stl_itr.key() << stl_itr.value();stl_itr++;}// 在QMap中查找// 根据KEY 查找对应的值//1.qDebug() << Grade["数学"] <<endl;//2.qDebug() << Grade.value("数学") <<endl;// 根据值来查找KeyqDebug() << Grade.key(120);// 修改键值// 一个键对应一个值,调用insert 将覆盖原有的键Grade.insert("英语",118);qDebug() << Grade.value("英语") <<endl;// 判断键是否存在?qDebug() << Grade.contains("数学") <<endl;// 输出Qmap对象的键和值QList<QString> Keys = Grade.keys();QList<int> Values = Grade.values();qDebug() << "key: " << Keys;qDebug() << "value: " << Values;// 一个键对应多个值 QMultiMap 类QMultiMap<QString,QString> MultiMap;MultiMap.insert("stu","id");MultiMap.insert("stu","name");MultiMap.insert("stu","grade");MultiMap.insert("stu","sex");MultiMap.insert("stu","age");qDebug() << MultiMap;

2. QHash

QHash<Key,T>具有与 QMap ,几乎完全相同的 API.QHash 维护着一张哈希表(Hash Table),哈希表的大小与 QHash 的数据项的数目相适应。QHash 以任意的顺序组织它的数据。当存储数据的顺序无关紧要时,建议使用 QHash 作为存放数据的容器。

QMap 与 QHash 区别:QHash 与 QMap,的功能差不多,但 QHash 的查找速度更快;QMap,是按照键的顺序存储数据,而 QHash ,是任意顺序存储的QMap,的键必须提供"<”运算符,而 QHash的键必须提供“=="运算符和个名为 gHash0的全局散列函数,

 // QHash类QHash<QString,int> Hash;Hash["key 1"] = 3;Hash["key 1"] = 8;Hash["key 4"] = 9;Hash["key 2"] = 1;// 插入hash数据Hash.insert("key 3",30);// 获取键列表QList<QString> key_list = Hash.keys();// 循环打印for (int var = 0; var < key_list.length(); var++) {qDebug() << key_list[var] << "," << Hash[key_list[var]] <<endl;}// QHash内部的迭代器 QHashIterator 用法与 QMapIterator 一样QHash<QString,int> hash;hash["key 1"] = 3;hash["key 1"] = 8;hash["key 4"] = 9;hash["key 2"] = 1;QHash<QString,int>::const_iterator itr;for (itr=hash.begin(); itr!=hash.end(); itr++){qDebug() << itr.key() << ":" << itr.value() << endl;}

3. QVector

QVector在相邻的内存当中存储给定数据类型T的一组数值。在一个QVector,的前部或者中间位置进行插入操作的速度是很慢的,这是因为这样的操作将导致内存中的大量数据被移动,这是由 QVector 存储数据的方式决定的。

// QVector类// QVector<T> 是QT的一个容器类QVector<int> qvr;// QVector存储的第一种方式qvr << 10;qvr << 20;qvr << 30;// 第二种qvr.append(50);qvr.append(60);qvr.append(70);qDebug() << qvr << endl;// 查看QVector中的元素的个数qDebug() << qvr.count() << endl;// 删除Qvector中的元素qvr.remove(0);// 循环打印for (int i = 0; i < qvr.count(); i++) {qDebug() << qvr[i] << endl;}qDebug() << endl;// 从第二个元素开始 删除后面三个元素qvr.remove(2,3);// 循环打印for (int i = 0; i < qvr.count(); i++) {qDebug() << qvr[i] << endl;}// 判断是否包含元素 QVector::contains() -> boolqDebug() << qvr.contains(40) << endl;
http://www.lryc.cn/news/340787.html

相关文章:

  • 使用Git将文件夹上传到Github以及使用Git LFS上传大文件
  • 1.SCI各模块
  • 记录shell编程中$1,$@等符号的含义
  • 单链表的应用
  • 手机副业赚钱秘籍:让你的手机变成赚钱利器
  • (二十七)Flask之数据库连接池DBUtils库
  • FewShotPromptTemplate和SemanticSimilarityExampleSelector的学习
  • 【保姆级】2024年OnlyFans订阅指南
  • 深入理解JVM中的G1垃圾收集器原理、过程和参数配置
  • VUE3 + Elementui-Plus 之 树形组件el-tree 一键展开(收起);一键全选(不全选)
  • 【Godot4自学手册】第三十七节钥匙控制开门
  • GitHub repository - Pulse - Contributors - Network
  • RocketMQ 10 面试题FAQ
  • 【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解
  • Leetcode 152. 乘积最大子数组和Leetcode 162. 寻找峰值
  • 项目实战之网络电话本之发送邮件名片和导出word版个人信息
  • 前端面试问题汇总 - HTTP篇
  • Java的IO流
  • Node.js 中的 RSA 加密、解密、签名与验证详解
  • vue+element作用域插槽
  • MUSA模型
  • avicat连接异常,错误编号2059-authentication plugin…
  • 阿里云云效CI/CD配置
  • 个人开发者,Spring Boot 项目如何部署
  • 【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解
  • 学习记录:转发和重定向
  • 实现(图像、视频等)数据上云存储
  • LeetCode 454.四数相加II
  • GoogleNet网络训练集和测试集搭建
  • 将数字状态码在后台转换为中文状态