QMultiMap使用
本文标题:QMultiMap使用 本文地址:http://techieliang.com/2017/12/539/
1. QMultiMap与QMap
操作可以说完全一样,只不过QMultiMap继承自QMap,并实现了一个key 对应多个value(通过插入多个相同key的值)。
由于一个key对应了多个值,所以QMultiMap取消了对”[]”的定义
Unlike QMap, QMultiMap provides no operator[]. Use
value() or replace() if you want to access the most recently inserted
item with a certain key. If you want to retrieve all the values for a
single key, you can use values(const Key &key), which returns a
QList<T>: QList<int> values = map.values(“plenty”); for (int
i = 0; i < values.size(); ++i) cout << values.at(i) <<
endl;
同时value会返回最后一次插入的值,而values可以返回所有的值
2. 使用范例
- QMultiMap<QString,int> m_map;
- //m_map["a"] = 10;//这几个会出错
- //m_map["a"] = 11;
- //m_map["as"] = 13;
- m_map.insert("b",22);//同key不同value
- m_map.insert("b",23);
- m_map.insert("ba",55);
- m_map.insert("ba",56);
- m_map.insert("t1",77);//同value不同key
- m_map.insert("t2",77);
- auto find_index = m_map.find("as");
- if(find_index!=m_map.end()) {
- qDebug()<<find_index.key()<<find_index.value();
- }
- qDebug()<<m_map.value("b");
- qDebug()<<m_map.value("aa");
- qDebug()<<m_map.values("b");//测试同key不同value
- qDebug()<<m_map.key(22);
- qDebug()<<m_map.key(77);
- qDebug()<<m_map.keys(77);//测试同value不同key
- //修改必须用replace
- m_map.replace("b",25);//讲第一个key=b的修改为了25
- m_map.replace("t3",77);//由于没有t3=77所以新增加了一个
- qDebug()<<m_map.values("b");
- qDebug()<<m_map.keys(77);
测试结果
- 23
- 0
- (23, 22)
- "b"
- "t1"
- ("t1", "t2")
- (25, 22)
- ("t1", "t2", "t3")
上述范例可以对比本博客QMap使用
QMultiMap使用的更多相关文章
- 两种QMultiMap的遍历方法(最好使用只读遍历器)
留个爪,备查 QMultiMap<QString, QString>& remote_map = my_obj->m_MapVersion; // ccc 这里体现了引用的好 ...
- 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
1 新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...
- Qt532.容器QMap&QMultiMap
PS: QMap 一个Key 只能对应 一个Value (不是绝对的情况...内部都有 一个key对应多个value的机制) PS: QMultiMap 一个Key 可以对应 多个Value PS: ...
- 1.QT该容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等待
1 新建一个项目 在pro文件里仅仅须要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStri ...
- C++中的容器类详解
一.STL容器类 STL(Standard Template Library)的六大组件:容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adap ...
- QMap与QHash
关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引.Qt提供两个主要的关联容器类:QMap<K, T>和QHash<K, T>. QMap<K, T>是一 ...
- qt 总结
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" ...
- (转)STL
C++容器类 C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等:后者包括set,map,multiset,multimap等. 若需要存储的元素数在 ...
- Qt 学习之路:存储容器
存储容器(containers)有时候也被称为集合(collections),是能够在内存中存储其它特定类型的对象,通常是一些常用的数据结构,一般是通用模板类的形式.C++ 提供了一套完整的解决方案, ...
随机推荐
- 网站漏洞修复案例之Discuz!3.4最新版本
Discuz!论坛目前最新版本为3.4版本,已经好久没有更新了,我们SINE安全在对其网站安全检测的同时发现一处漏洞,该漏洞可导致论坛的后台文件可以任意的删除,导致网站瘫痪,后台无法登陆.关于该网站漏 ...
- 坚果云WebDav示例
坚果云WebDav示例 最近看到坚果云有一个WebDAV应用,一时不解这是什么功能,了解后做了一个示例: WebDAV是一种基于HTTP1.1协议的通信协议.它扩展了HTTP1.1,在GET.POST ...
- Spring Cloud学习入门路线方案
Spring Cloud 为开发者提供了在分布式系统(如配置管理.服务发现.断路器.智能路由.微代理.控制总线.一次性Token.全局锁.决策竞选.分布式会话和集群状态)操作的开发工具.本Spring ...
- 20155220吴思其 实验2 Windows口令破解
实验目的: 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验人数 每组一人 系统环境 windows 实验工具 LC5 SuperDic 实验原理 口令破解方法 ...
- 2016-2017-2 《Java程序设计》第二周学习总结
20155319 2016-2017-2 <Java程序设计>第二周学习总结 课堂学习内容 git:版本控制 java -d bin(当地文件夹) src/Hello.java把生成的.c ...
- Storyboarding by Scripting
Storyboarding by Scripting In the .osu file, under [Events]:Note: underscores can be replaced with s ...
- 用 Qt 的 QAudioOutput 类播放 WAV 音频文件
用 Qt 的 QAudioOutput 类播放 WAV 音频文件 最近有一个项目,需要同时控制 4 个声卡播放不同的声音,声音文件很简单就是没有任何压缩的 wav 文件. 如果只是播放 wav 文件, ...
- L014-第三关课前linux命令及基础知识考试手把手实战解答小节
又是一周啊,以后保持一周一个微博吧. 这是一个堂解答考试题的课,那么就以题目来展开吧! 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这 ...
- LumiSoft.Net 收发邮件
一:LumiSoft.Net简介 Lumisoft is a software development company specialised in mobile phones and tablets ...
- Flask 路由相关操作
URL Route URL 后接 / 作为目录级访问 URL 后不接 / 作为文件级访问 from flask import Flask app = Flask(__name__) @app.rout ...