在看书(Qt 5.9 C++开发指南)的时候,书上写:
QMap存储数据是按照键的顺序,如果不在乎存储顺序,使用QHash会更快。
实现方式:提供一个字典(关联数组),一个键映射到一个值。
实验:
QMap<QString,int> map;
map["123"]=1;
map["21"]=2;
map["111111111111"]=-1;
map["33333"]=4;
map["1"]=-2;
QMap<QString,int>::Iterator iter;
for(iter = map.begin();iter != map.end();iter++)
{
qDebug()<<iter.key()<<" "<<iter.value();
}
"1" -2
"111111111111" -1
"123" 1
"21" 2
"33333" 4
QMap<int,QString> map;
map[123]="1";
map[21]="2";
map[11111111]="-1";
map[33333]="4";
map[1]="-2";
QMap<int,QString>::Iterator iter;
for(iter = map.begin();iter != map.end();iter++)
{
qDebug()<<iter.key()<<" "<<iter.value();
}
1 "-2"
21 "2"
123 "1"
33333 "4"
11111111 "-1"
可以知道:QMap存储数据是按照键顺序来存储的。
QString按照字典序
int按照数值大小
QHash
基于散列表来实现字典功能
速度非常快
数据项是任意顺序的
QHash<QString,int> map;
map["123"]=1;
map["21"]=2;
map["111111111111"]=-1;
map["33333"]=4;
map["1"]=-2;
QHash<QString,int>::Iterator iter;
for(iter = map.begin();iter != map.end();iter++)
{
qDebug()<<iter.key()<<" "<<iter.value();
}
运行了三次,结果都不一样
"1" -2
"111111111111" -1
"21" 2
"123" 1
"33333" 4
"21" 2
"111111111111" -1
"123" 1
"33333" 4
"1" -2
"111111111111" -1
"21" 2
"123" 1
"33333" 4
"1" -2
QHash<int,QString> map;
map[123]="1";
map[21]="2";
map[11111111]="-1";
map[33333]="4";
map[1]="-2";
QHash<int,QString>::Iterator iter;
for(iter = map.begin();iter != map.end();iter++)
{
qDebug()<<iter.key()<<" "<<iter.value();
}
11111111 "-1"
1 "-2"
21 "2"
123 "1"
33333 "4"