• 5912阅读
  • 3回复

这用QMap还是QStringList好? map.value("str1000") vs str.indexOf("str1000") [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-04
有一个很长的对应关系列表,如下:

QString         int
"str3"             1
"str2"             2
"str9"             3
"str3"             4
"str0"             5
......
"str10000"
......



以上有一个string与int对应的列表,很长很长

如果我要查找"str10000"对应的整形值,以下两种方法,那个查找速度更快?

QMap<QString,int>   map;
map.insert("str3",1);
map.insert("str2",2);
.......
map.value("str10000");          //获得

------------------------------------------------------------------
QStringList str;
str<<"str3";
str<<"str2";
......
str.indexOf("str10000");         //获得
[ 此帖被iiiyyyhhhsss在2010-03-05 09:02重新编辑 ]
离线iiiyyyhhhsss

只看该作者 1楼 发表于: 2010-03-05
发现QMap必QStringList快好几十个档次...
离线benbenmajia

只看该作者 2楼 发表于: 2010-03-05
他们的存储方式不一样的,以前看过,你google一下他们的区别就ok了吧?
安然.....
离线pinkfrog
只看该作者 3楼 发表于: 2010-03-05
只是查找的话,List不用跟Map比了

Hash比Map更快一点
区别如下
QMap and QHash provide very similar functionality. The differences are:

QHash provides faster lookups than QMap. (See Algorithmic Complexity for details.)
When iterating over a QHash, the items are arbitrarily ordered. With QMap, the items are always sorted by key.
The key type of a QHash must provide operator==() and a global qHash(Key) function. The key type of a QMap must provide operator<() specifying a total order.
快速回复
限100 字节
 
上一个 下一个