zoukankan      html  css  js  c++  java
  • Qt QMap简单用法

    QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMap

    QHash具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序住址他的数据,,当然了他也是可以支持一键多值的,QMultiHash

    两种之间的区别是:

    QHash查找速度上显著于QMap

    QHash以任意的方式进行存储,而QMap则是以key顺序进行存储.

    Qhash 的键类型必须提供operator==()和yige 全局的qHash(key)函数。而QMap的键类型key必须提供operator<()函数.

    他们同样也是有两种风格的迭代容器。用来进行遍历的。

     1 ///QMap<Key,T(value)> and QHash<K,T>
     2  
     3 #include <QtCore/QCoreApplication>
     4 #include <qmap.h>
     5 #include <qdebug.h>
     6  
     7 int main(int argc, char *argv[])
     8 {
     9     QCoreApplication a(argc, argv);
    10  
    11     QMap<QString,int> map;
    12     map.insert("eins o",1);
    13     map.insert("sieben",7);
    14     map["a test"]=23;
    15     //Normally, a QMap allows only one value per key. 
    16     //If you call insert() with a key that already exists in the QMap, 
    17     //the previous value will be erased
    18     map["a test"]=13;
    19  
    20     int val=map.value("a test");
    21     qDebug()<<val;
    22  
    23     int val2=map.value("error");
    24     qDebug()<<val2;    ///0
    25  
    26     int val3=map.value("error2",20);
    27     qDebug()<<val3;
    28  
    29     int val4=map.value("a test",40);
    30     qDebug()<<val4;
    31     using a java-style iterator
    32     QMapIterator<QString,int> iter(map);
    33     while(iter.hasNext())
    34     {
    35         iter.next();  ///放在前面
    36         qDebug()<<iter.key()<<" "<<iter.value();
    37     }
    38     using an Stl-style iterator 
    39     QMap<QString,int>::ConstIterator i=map.constBegin();
    40     while(i!=map.constEnd())
    41     {
    42         qDebug()<<i.key()<<": "<<i.value();
    43         ++i;
    44     }
    45  
    46     QMap<QString,int>::Iterator it;
    47     it=map.find("sieben");
    48     if(it!=map.end())
    49         it.value()=8;
    50  
    51     for(QMap<QString,int>::ConstIterator ite=map.constBegin(); ite!=map.constEnd(); ++ite)
    52         qDebug()<<ite.key()<<": "<<ite.value();
    53  
    54     return 0;//a.exec();
    55 }
    结果:
    13
    0
    20
    13
    "a test"   13
    "eins o"   1
    "sieben"   7
    "a test" :  13
    "eins o" :  1
    "sieben" :  7
    "a test" :  13
    "eins o" :  1
    "sieben" :  8
    请按任意键继续. . .
  • 相关阅读:
    hdu5441Travel【并查集】
    笔试题 brotherword【tire || hash】
    20150917
    字典树模板
    三维凸包模板
    HUST1341A Simple Task【模拟】
    hust1350Trie【字典树+dfs || 字典树 + LCA】
    kmp笔试题。。
    poj3461Oulipo【kmp】
    【转帖】如何看外文文献
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13948875.html
Copyright © 2011-2022 走看看