进步始于交流
收获源于分享

QMultiMap使用

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可以返回所有的值

使用范例

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使用

赞(0) 打赏
未经允许不得转载:Coologic » QMultiMap使用

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏