版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题: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. 使用范例

  1. QMultiMap<QString,int> m_map;
  2. //m_map["a"] = 10;//这几个会出错
  3. //m_map["a"] = 11;
  4. //m_map["as"] = 13;
  5. m_map.insert("b",22);//同key不同value
  6. m_map.insert("b",23);
  7. m_map.insert("ba",55);
  8. m_map.insert("ba",56);
  9. m_map.insert("t1",77);//同value不同key
  10. m_map.insert("t2",77);
  11. auto find_index = m_map.find("as");
  12. if(find_index!=m_map.end()) {
  13. qDebug()<<find_index.key()<<find_index.value();
  14. }
  15. qDebug()<<m_map.value("b");
  16. qDebug()<<m_map.value("aa");
  17. qDebug()<<m_map.values("b");//测试同key不同value
  18. qDebug()<<m_map.key(22);
  19. qDebug()<<m_map.key(77);
  20. qDebug()<<m_map.keys(77);//测试同value不同key
  21. //修改必须用replace
  22. m_map.replace("b",25);//讲第一个key=b的修改为了25
  23. m_map.replace("t3",77);//由于没有t3=77所以新增加了一个
  24. qDebug()<<m_map.values("b");
  25. qDebug()<<m_map.keys(77);

测试结果

  1. 23
  2. 0
  3. (23, 22)
  4. "b"
  5. "t1"
  6. ("t1", "t2")
  7. (25, 22)
  8. ("t1", "t2", "t3")

上述范例可以对比本博客QMap使用

转载请以链接形式标明本文标题和地址:Techie亮博客 » QMultiMap使用

QMultiMap使用的更多相关文章

  1. 两种QMultiMap的遍历方法(最好使用只读遍历器)

    留个爪,备查 QMultiMap<QString, QString>& remote_map = my_obj->m_MapVersion; // ccc 这里体现了引用的好 ...

  2. 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等

    1  新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...

  3. Qt532.容器QMap&QMultiMap

    PS: QMap 一个Key 只能对应 一个Value (不是绝对的情况...内部都有 一个key对应多个value的机制) PS: QMultiMap 一个Key 可以对应 多个Value PS:  ...

  4. 1.QT该容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等待

    1  新建一个项目 在pro文件里仅仅须要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStri ...

  5. C++中的容器类详解

    一.STL容器类 STL(Standard Template Library)的六大组件:容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adap ...

  6. QMap与QHash

    关联容器可以保存任意多个具有相同类型的项,且它们由一个键索引.Qt提供两个主要的关联容器类:QMap<K, T>和QHash<K, T>. QMap<K, T>是一 ...

  7. qt 总结

    Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" ...

  8. (转)STL

    C++容器类 C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等:后者包括set,map,multiset,multimap等. 若需要存储的元素数在 ...

  9. Qt 学习之路:存储容器

    存储容器(containers)有时候也被称为集合(collections),是能够在内存中存储其它特定类型的对象,通常是一些常用的数据结构,一般是通用模板类的形式.C++ 提供了一套完整的解决方案, ...

随机推荐

  1. Java线程等待与唤醒

    class ThreadA extends Thread{ public ThreadA(String name) { super(name); } public void run() { synch ...

  2. 【转载】Ogre3d 2.1 源码编译安装教程

    原文:Ogre3d 2.1 源码编译安装教程 今年是3D手游年,今年也是游戏引擎战争进入白热的一年. 移动游戏的红海时代,让各大端游也忍不住纷纷伸出大白腿,Unreal.CryEngine纷纷宣布自己 ...

  3. 【LG3206】[HNOI2010]城市建设

    [LG3206][HNOI2010]城市建设 题面 洛谷 题解 有一种又好想.码得又舒服的做法叫线段树分治+\(LCT\) 但是因为常数过大,无法跑过此题. 所以这里主要介绍另外一种玄学\(cdq\) ...

  4. mybatis逆向工程 mbg运行java代码时提示找不到MBG.xml的解决方法

    这里要写全路径才能找到文件

  5. iOS 关于权限设置的问题

      在info.plist文件下添加 <key>NSContactsUsageDescription</key>    <string>请求访问通讯录</st ...

  6. C#是数据类型

    C#又开始了 开始数据类型 用的软件是VS2017 E short 短整型 int  中等整型 long  长整形 string  字符串类型 bool  布尔类型(true/flase)  相当于数 ...

  7. WebGL射线拾取模型——八叉树优化

    经过前面2篇WebGL射线拾取模型的文章,相信大家对射线和模型面片相交的原理已经有所了解,那么今天我们再深入探究关于射线拾取的一个问题,那就是遍历场景中的所有与射线相交的模型的优化问题.首先我们来复习 ...

  8. Siki_Unity_2-4_UGUI_Unity5.1 UI 案例学习

    Unity 2-4 UGUI Unity5.1 UI 案例学习 任务1-1:UGUI简介 什么是GUI: 游戏的开始菜单 RPG游戏的菜单栏.侧边栏和功能栏(比如背包系统.任务列表等) 设计用来控制移 ...

  9. Struts2(一.基本介绍,环境搭建及需求分析)

    Struts2框架开发 前言 开发工具:eclipse struts1:老项目使用较多,维护时需要用到 struts2:新项目使用较多 一.特点 1. 无侵入式设计 struts2 与 struts ...

  10. python之奇思妙想

    一.概述 本篇主要介绍自己平常所遇到的各种有趣的关于python的简短例子 二.正文 chapter 1 解决思路: s='{:,.2f}'.format(100000.0) print(s) cod ...