版权声明:若无来源注明,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. 基于STM32的简易磁卡充值系统

    使用的是MFRC522射频模块,把磁卡放入感应区后,可以执行三种操作: 初始化磁卡金额 读取卡内金额 向卡内写入金额(充值) 本来想着回学校了能把洗浴卡的金额给改掉,实现帝皇般的尊贵洗浴享受(不花钱… ...

  2. Linux 字符设备驱动—— ioremap() 函数解析

    一. ioremap() 函数基础概念 几乎每一种外设都是通过读写设备上的相关寄存器来进行的,通常包括控制寄存器.状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址.根据CPU体系结构的不同, ...

  3. flink 根据时间消费kafka

    经常遇到这样的场景,13点-14点的时候flink程序发生了故障,或者集群崩溃,导致实时程序挂掉1小时,程序恢复的时候想把程序倒回13点或者更前,重新消费kafka中的数据. 下面的代码就是根据指定时 ...

  4. 如何将M文件转成独立可执行程序

    如何将MATLAB程序编译成独立可执行的程序?生成独立可执行的程序(exe文件)步骤    1.安装编译器.可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2013实现 ...

  5. 选择区域缩放Flex Chart

    http://www.riafan.com/zoom-chart/ 演示地址: http://www.riafan.com/flash/zoomchart/ 下载地址: http://www.riaf ...

  6. 20155339 2016-2017-2 《Java程序设计》第1周学习总结

    20155339 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 一直以为JAVA应该只是一种语言,研读了书本之后发现原来JAVA也代表了解决问题的平 ...

  7. WPF RoutedEvent and HitTest - 简书

    原文:WPF RoutedEvent and HitTest - 简书 学习的时候切忌心浮气躁,慢慢的过每一个知识点,不要漏掉任何细节.不然当遇到细节问题的时候,会恼,会闹,会悔不该当初--花一下午调 ...

  8. tkinter界面卡死的解决办法

    0.如果点击按钮,运行了一个比较耗时的操作,那么界面会卡死 import tkinter as tk import time def onclick(text, i): time.sleep(3) t ...

  9. 【洛谷P4178】Tree

    题面 题解 感觉和\(CDQ\)分治一样套路啊 首先,构建出点分树 对于每一层分治重心,求出它到子树中任意点的距离 然后\(two-pointers\)计算满足小于等于\(K\)的点对数目,加入答案 ...

  10. Python闭包相关问题

    闭包的概念一直是似懂非懂,看过了原理,却不知道怎么实际应用. 刚好看到Python的late binding问题,记录如下,以备后续增补. >>> def create_multip ...