QT  - 讨论区

标题:Qt Tutorial 005:QHash的使用方法

2014年02月18日 星期二 09:27

QHash是Qt Core模块提供的哈希表数据结构,类似C++11标准的unordered_map,一般来说,哈希表的查找的算法复杂度比基于平衡树的map要好。在Qt的官方文档中,有如下说明:

  • QHash provides faster lookups than QMap. (See Algorithmic Complexity for details.)
  • When iterating over a QMap, the items are always sorted by key. With QHash, the items are arbitrarily ordered.
  • 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 the related non-member functions).

QHash也是一个模板类,使用方法很简单,代码示例如下:

#include <QCoreApplication>
#include <QHash>
#include <QString>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QHash<QString,QString> friends;
    friends["mengguang"]="mengguang@gmail.com";
    qDebug() << friends;
    friends.insert("mengkang","mengkang@163.com");
    qDebug() << friends;
    QString name("mengkang");
    if(friends.contains(name)){
        qDebug() << friends[name];
    }
    qDebug() << friends.value("laomeng","nonexists@gmail.com");
    qDebug() << friends.capacity();
    for(auto email : friends){
        qDebug() << email;
    }
    for(auto name : friends.keys()){
        qDebug() << name;
        qDebug() << friends.value(name);
    }
    friends.remove("mengguang");
    qDebug() << friends;
    friends.clear();
    return a.exec();
}

参考资料:

http://qt-project.org/doc/qt-4.8/qhash.html

http://www.cplusplus.com/reference/unordered_map/unordered_map/

2014年02月22日 星期六 00:55

cool

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号