Qt容器类QMap QHash

    技术2022-05-20  76

    QMap<key,T>提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据, 这个类也支持一键多值的情况,用类QMultiMap<key,T> QHash<key,T>具有和QMap几乎完全一样的APi,此类维护这一张哈希表,表的大小和数据项是自适应的,QHash是以任意的顺序住址他的数据,,当然了他也是可以支持一键多值的,QMultiHash<key,T> 两种之间的区别是: QHash查找速度上显著于QMap QHash以任意的方式进行存储,而QMap则是以key顺序进行存储 Qhash 的键类型必须提供operator==()和yige 全局的qHash(key)函数。而QMap的键类型key必须提供operator<()函数 他们同样也是有两种风格的迭代容器。用来进行遍历的。。 STL 风格的 QMap<key,T>  QMap<key,T>::const_iterator QMap<key,T>::iterator//同样中间那个也是只读的,最后那个是读写的。 下面以一个例子来进行说明: #include <QDebug> int main(int argc, char *argv[]) {     QMap<QString, QString> map;     map.insert("beijing", "111");     map.insert("shanghai", "021");     map.insert("tianjin", "022");     map.insert("chongqing", "023");     map.insert("jinan", "0531");     map.insert("wuhan", "027");    QMap<QString, QString>::const_iterator i;     for( i=map.constBegin(); i!=map.constEnd(); ++i)         qDebug() << i.key() <<"        " << i.value();                QMap<QString, QString>::iterator mi;     mi = map.find("beijing");     if(mi != map.end())         mi.value() = "010";     QMap<QString, QString>::const_iterator modi;     qDebug() << "";     for( modi=map.constBegin(); modi!=map.constEnd(); ++modi)         qDebug() << modi.key() <<"        " << modi.value();        return 0; } 原帖 http://blog.sina.com.cn/s/blog_663a99e90100homj.html

     


    最新回复(0)