QMap和QHash类

QMap和QHash具有非常相似的功能,它们的差别仅在于:

1.QHash具有比QMap更快的查找速度.

2.QHash以任意的顺序存储数据项,而QMap总是按照键 key的顺序存储数据.

3.QHash的键类型 Key必须提供operator==()和一个全局的qHash(Key)函数,而QMap的键类型Key

必须提供一个operator<()函数。

 

两者时间复杂度比较

容器类 键查找   插入  
  平均 最坏 平均 最坏
QMap O(log n) O(log n) O(log n) O(log n)
QHash Amort.O(1) O(n) Amort.O(1) O(n)

 

QMap类:

QMap提供了一个从类型为Key的键到类型为T的值得映射。

QMap存储的数据形式是一个键对应一个值,并且按照键Key的顺序存储数据。

 

QMap的使用例子

#include 
#include

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QMap map;
    map.insert("beijing","111");          //map插入字符串"beijing" "111"
    map.insert("shanghai","222");         //map插入字符串"shanghai" "222"

    QMap::const_iterator i;
    for(i=map.constBegin();i!=map.constEnd();i++)   //迭代器遍历输出字符串
        qDebug()<<"  "<::iterator mi;
    mi=map.find("beijing");            //遍历查找"beijing" 的map
    if(mi!=map.end())
        mi.value()="001";             //替换"111"

    QMap::const_iterator modi;
    qDebug()<<"  ";
    for(modi=map.constBegin();modi!=map.constEnd();modi++)   //再次遍历输出map的键值
    {
        qDebug()<<"  "<

程序输出:

QMap和QHash类_第1张图片

 

STL风格迭代器的两种分类:

容器类 只读迭代器 读写迭代器
QMap,QMultiMap QMap::const_iterator QMap::iterator
QHash,QMultiHash QHash::const_iterator QHash::iterator

 

关于QMap和QHash的用法及成员函数详解可参考Qt文档

http://doc.qt.io/qt-5/qmap.html

http://doc.qt.io/qt-5/qhash.html

 

你可能感兴趣的:(Qt)