目录
7. 一个键对应多个值 直接使用QMultiMap类来实例化一个QMap对象
QMap
应用示例:
创建QMap实例,第一个参数为QString类型的值,第二个参数为int类型的值
- // 创建QMap实例,第一个参数为QString类型的值,第二个参数为int类型的值
- QMap
int> qmap; -
- // 插入数据信息,两种方式
- qmap["zgl"] = 666;
- qmap["ljx"] = 520;
-
- qmap.insert("ljg",666);
- qmap.insert("ljc",666);
-
- qDebug()<
2.删除数据信息
- // 删除数据信息key键
- qmap.remove("zgl");
- qDebug()<
3.迭代器
- // 遍历 QMap 类的实例:数据信息
- // 1.迭代器
- QMapIterator
int > itr(qmap); - while(itr.hasNext()){
- itr.next();
- qDebug()<
key()<<":"<value(); - }
4.STL类型迭代
- // 2.STL类型的迭代
- qDebug()<
- QMap
int>::const_iterator stritr = qmap.constBegin(); - while(stritr != qmap.constEnd()){
- qDebug()<
key()<<":"<value(); - stritr++;
- }
5.key键/T键查找
- // 用key键/T键查找
- qDebug()<
- qDebug()<<"Key-->T"<
value("ljg"); - qDebug()<<"T-->Key"<
key(520)<
6.修改键值
- // 修改键值
- // 一个键对应一个值,再次调用insert()函数将覆盖之前的值
- qmap.insert("ljg",111);
- qDebug()<
value("ljg");
7. 一个键对应多个值 直接使用QMultiMap类来实例化一个QMap对象
- // 一个键对应多个值
- // 直接使用QMultiMap类来实例化一个QMap对象
- qDebug()<
- QMultiMap
mulmap; - mulmap.insert("student","name");
- mulmap.insert("student","sex");
- mulmap.insert("student","age");
- qDebug()<
二、QHash 类
QHash具有与 QMap 几乎完全相同的APl。QHash 维护着一张哈希表 (Hash Table) ,哈希表的大小与 QHash 的数据项的数目相适应。
QHash 以任意的顺序组织它的数据。当存储数据的顺序无关紧要时,建议使用 QHash 作为存放数据的容器。
案例分析:
- #include
-
- #include
-
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
-
- // QHash 类
- QHash
int> qhash; -
- qhash["key 1"] = 3;
- qhash["key 1"] = 8;
- qhash["key 4"] = 4;
- qhash["key 3"] = 2;
- qhash.insert("key 3",30);
-
- QList
list = qhash.keys(); - for(int i=0;i
length();i++){ - qDebug()<
","<value(list[i]);
- }
-
- // QHash 内部的迭代器 QHashIterator 类
- qDebug()<
- QHash
int> hash; - hash["key 1"] = 11;
- hash["key 2"] = 22;
- hash["key 3"] = 33;
- hash["key 4"] = 44;
- hash.insert("key 3",100);
-
- QHash
int>::const_iterator itr; - for(itr = hash.begin();itr != hash.end();itr++){
- qDebug()<
key()<<"-->"<value(); - }
-
- return a.exec();
- }
编译执行结果:每次排序都不同
QMap 与 QHash 区别:
- QHash 与 QMap 的功能差不多,但 QHash 的查找速度更快
- QMap 是按照键的顺序存储数据,而 QHash 是任意顺序存储的
- QMap 的键必须提供"<”运算符,而 QHash 的键必须提供“=="运算符和一个名为 qHash()的全局散列函数
三、QVector类
QVector在相邻的内存当中存储给定数据类型T的一组数值。在一个QVector 的前部或者中间位置进行插入操作的速度是很慢的,这是因为这样的操作将导致内存中的大量数据被移动,这是由 QVector 存储数据的方式决定的
案例分析:
- #include
-
- #include
-
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
-
- // Qvector类
- // Qvector
是Qt的一个容器类 - QVector<int> qvr;
-
- // 第一种赋值方式
- qvr<<10;
- qvr<<20;
- qvr<<30;
- qvr<<40;
- // 第二种赋值方式
- qvr.append(50);
- qvr.append(60);
- qvr.append(70);
-
- qDebug()<
-
- // 求出Qvector 类容器的实例化:元素个数
- qDebug()<<"qvr count = "<
count()< -
- // 遍历所有元素
- for(int i=0;i
count();i++){ - qDebug()<
- }
-
- // 删除qvr容器里面的元素
- qDebug()<
- qvr.remove(0);
- for(int i=0;i
count();i++){ - qDebug()<
- }
-
- // 从第二个元素开始,删除后面三个元素
- qvr.remove(2,3);
- qDebug()<
- for(int i=0;i
count();i++){ - qDebug()<
- }
-
- // 判断容器中是否包含某个元素
- qDebug()<
- qDebug()<<"result = "<
contains(70);// 返回ture - qDebug()<<"result = "<
contains(666);// 返回false -
- return a.exec();
- }
编译执行结果:
-
相关阅读:
视频编解码器H.264和H265有什么区别?
Flink_CDC搭建及简单使用
Linux服务器上跑深度学习实验
java 随机数
地球的某一片红薯地中秋圆辉少许《乡村振兴战略下传统村落文化旅游设计》——2023学生旅行季许少辉八月新书想象和世界一样宽广
查找list中重复出现的次数【list.count】
38. UE5 RPG 修改火球术的攻击方向以及按住Shift攻击
扩展windows 10 文件夹文件路径位数
【mybatis4】MyBatis的一级缓存机制
给定一个数组,求任意个数的和,可能的结果。
-
原文地址:https://blog.csdn.net/m0_74712453/article/details/133617387