Loading...
首页专栏正文

Qt无序键值对

 
1人已赏
小王子🤴 发布于 2020-11-06 15:53:02 浏览 1121 点赞 15 收藏 8

QMap是一个键值对类,跟标准C++的map类基本类似,声明原型如下:

QMap<T1,T2> map1

T1为键值对中的键key,T2为键值对中的值。通过键值对中的键可以搜索到值。一般来说,键值对中的键是唯一的,不可重复,而值没有要求,可以重复。并且QMap具有自动排序功能,对输入的键进行排序。 Qt的键值对容器都是自带排序的,直接上代码

#include <QMap>
int main(int argc, char *argv[])
{
    QMap<int,QString> map;
    map.insert(3,"map3");
    map.insert(1,"map1");
    map.insert(2,"map2");
    map.insert(6,"map6");
    map.insert(4,"map4");
    map.insert(5,"map5");
    map.insert(8,"map8");
    map.insert(7,"map7");
    map.insert(11,"map11");
    map.insert(9,"map9");
    map.insert(10,"map10");
    for (auto i = map.begin();i != map.end();i++) {
        std::cout << "key:" << i.key() << "value:" << i.value().toStdString() << "\n";
    }
    return 0;
}

运行结果: 存储map时顺序是打乱的,但是打印结果是顺序的,这是因为QMap是有序容器,数据存储后会被自动排序,但有时候我们想要无序的键值对。 无序键值对:QList<QPair<type,type>>

#include <QList>
#include <QMap>
int main(int argc, char *argv[])
{

    QList<QPair<int,QString>> map;
    map.append(QPair<int,QString>(2,"map2"));
    map.append(QPair<int,QString>(1,"map1"));
    map.append(QPair<int,QString>(4,"map4"));
    map.append(QPair<int,QString>(3,"map3"));
    map.append(QPair<int,QString>(7,"map7"));
    map.append(QPair<int,QString>(5,"map5"));
    map.append(QPair<int,QString>(6,"map6"));
    map.append(QPair<int,QString>(9,"map9"));
    map.append(QPair<int,QString>(8,"map8"));
    map.append(QPair<int,QString>(11,"map11"));
    map.append(QPair<int,QString>(10,"map10"));
    foreach (auto i, map) {
        std::cout << "key:" <<i.first << "value:" << i.second.toStdString() << "\n";
    }
//    QMap<int,QString> map;
//    map.insert(3,"map3");
//    map.insert(1,"map1");
//    map.insert(2,"map2");
//    map.insert(6,"map6");
//    map.insert(4,"map4");
//    map.insert(5,"map5");
//    map.insert(8,"map8");
//    map.insert(7,"map7");
//    map.insert(11,"map11");
//    map.insert(9,"map9");
//    map.insert(10,"map10");
//    for (auto i = map.begin();i != map.end();i++) {
//        std::cout << "key:" << i.key() << "value:" << i.value().toStdString() << "\n";
//    }
    return 0;
}

运行结果: 运行结果与存储顺序相同

*本文仅代表作者观点,不代表易百纳技术社区立场。系作者授权易百纳技术社区发表,未经许可不得转载。

精彩评论

内容存在敏感词
打赏
打赏作者
小王子🤴
您的支持将鼓励我继续创作!
金额:
¥1 ¥5 ¥10 ¥50 ¥100
支付方式:
微信支付
支付宝支付
微信支付
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区