Qt容器QMap(映射)

发布时间:2024年01月24日

插入数据

QMap<QString,QString> infoMap; //第一个是key 第二个是value
    infoMap.insert("王祖蓝","163cm");
    infoMap.insert("Anglebaby","168cm");
    infoMap["易烊千玺"] = "173cm(成长中)";
    infoMap["姚明"] = "226cm";

通过Key找value?

    qDebug()<<"姚明:"<<infoMap["姚明"];
    qDebug()<<"易烊千玺:"<<infoMap.value("易烊千玺");

通过value找Key?

qDebug()<<"168cm的是谁呢?"<<infoMap.key("168cm")<<endl;

Java风格迭代器

只读

 QMapIterator<QString,QString> it_r(infoMap);
    for(it_r.toFront();it_r.hasNext();)
    {
        it_r.next();
        qDebug()<<it_r.key()<<" : "<<it_r.value();
    }
    

注:输出的结果不是按照插入数据输出而是键序进行排序,它是有顺序的(可以理解为按字母顺便排序),哈希表是无序的!

读写?

  QMutableMapIterator<QString,QString> it_rw(infoMap);
    if(it_rw.findNext("163cm"))
        it_rw.setValue("163.1cm");

    qDebug()<<endl<<"修改后的数据遍历:";
    for(it_rw.toFront();it_rw.hasNext();)
    {
        it_rw.next();
        qDebug()<<it_rw.key()<<":"<<it_rw.value();
    }

STL风格迭代器?

只读

    QMap<QString,QString> wMap;
    wMap.insert("spring","15℃");
    wMap.insert("summer","35℃");
    wMap.insert("autumn","23℃");
    wMap.insert("winter","-5℃");

    //STL风格迭代器 ,只读
    QMap<QString,QString>::const_iterator i_r;
    i_r = wMap.constBegin();

    qDebug()<< endl <<"初始化季节遍历:";
    for(;i_r!=wMap.constEnd();++i_r)
        qDebug()<<i_r.key()<<" : "<<i_r.value();

注:输出的结果不是按照插入数据输出而是键序进行排序,它是有顺序的(可以理解为按字母顺便排序),哈希表是无序的!?

读写?

    QMap<QString,QString>::iterator i_rw;
    i_rw = wMap.find("spring");
    if(i_rw!=wMap.end())
        i_rw.value() = "16℃";

    qDebug()<<endl<<"修改春天的数据后遍历:";
    i_rw = wMap.begin();
    for(;i_rw!=wMap.end();++i_rw)
        qDebug()<<*i_rw;

?Key对应多个value

    QMultiMap<QString,QString> wMap1;
    wMap1.insert("spring","15℃");
    wMap1.insert("summer","35℃");
    wMap1.insert("summer","39℃");
    wMap1.insert("summer","40℃");
    wMap1.insert("autumn","23℃");
    wMap1.insert("winter","-5℃");
    wMap1.insert("winter","-15℃");
    wMap1.insert("winter","-55℃");

    qDebug() <<endl <<"初始化wMap: "<<wMap1;

    wMap1.remove("winter","-55℃");
    qDebug()<<endl<<"删除winter:-55℃后"<<wMap1;

    qDebug()<<endl<<"winter:"
          <<wMap1.values("winter");

Java风格只读迭代器

    QMapIterator<QString,QString> i_r1(wMap1);

    qDebug()<<endl<<"初始化季节遍历:";
    for(i_r1.toFront();i_r1.hasNext();)
        qDebug()<<i_r1.key()<<" : "<<i_r1.next().value();

注:遍历数据拿值要从下一个开始拿!??

????????qDebug()<<i_r1.key()<<" : "<<i_r1.next().value();

? ? ? ? 一定要添加上next()

文章来源:https://blog.csdn.net/nanshenchao/article/details/135792566
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。