title: “ QHash和QMultiHash使用\t\t”
tags:
- qhash
- QMultiHash
- qt
url: 557.html
id: 557
categories: - Qt
date: 2017-12-06 13:23:13
介绍
QHash
The key type of a QMap must provide operator<(). The key type of a QHash must provide operator==() and a global hash function called qHash() (see qHash).
QMap需要提供operator<()。QHash
简单范例
QHash
include
include
QHash
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()<
qDebug()<
结果
“as” 13
11
23
0
(23)
“”
“t2”
(“t2”, “t1”)
QMultiHash
QMultiHash
//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()<
qDebug()<
m_map.replace(“b”,25);//讲第一个key=b的修改为了25
m_map.replace(“t3”,77);//由于没有t3=77所以新增加了一个
qDebug()<
结果
0
23
0
(23, 22)
“b”
“t1”
(“t1”, “t2”)
(25, 22)
(“t1”, “t2”, “t3”)
自定义类型实现hash
见QSet使用-自定义类型,QSet也是利用哈希表实现,原理相同。