QMultiMap使用

博客地址已更改,文章数量较多不便批量修改,若想访问源文请到 coologic博客 查阅,网址:www.coologic.cn

如本文记录地址为 techieliang.com/A/B/C/ 请改为 www.coologic.cn/A/B/C/ 即可查阅

版权声明:若无来源注明,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使用
原文地址:https://www.cnblogs.com/techiel/p/7989912.html