首页 > 其他分享 >3、QMap,QHash,QVector

3、QMap,QHash,QVector

时间:2023-11-22 16:25:01浏览次数:31  
标签:QHash qmap QVector qDebug qh itr QMap

QMap

  QMap<Key,T>提供一个从类型为Key的键到类型为T的值的映射。形式为一个键对应一个值。按照键Key的次序存储数据。为了能够支持一键多值,QMap提供QMap<Key,T>::insertMulti()和QMap<Key,T>::values()的函数。

//QMap类
    //1:创建Map实例,第一个参数为QString类型的键值,第二个参数为int类型的值
    QMap<QString,int> qmap;

    //插入信息
    qmap["Chinese"]=120;
    qmap["Math"]=108;
    qmap.insert("English",20);

    qDebug() << qmap;

    //删除数据
    qmap.remove("English");
    qDebug() << qmap;


    //遍历QMap类实例
    // 1:迭代器
    QMapIterator<QString,int> itr(qmap);
    while (itr.hasNext()) {
        itr.next();
        qDebug() << itr.key() << ":" << itr.value();
    }


    // 2:STL类型的迭代
    QMap<QString,int>::const_iterator stritr=qmap.constBegin();
    while (stritr != qmap.constEnd()) {
        qDebug() << stritr.key() << ":" << stritr.value();
        stritr++;
    }


    //根据key查找value
    qDebug() << qmap.value("Math");
    //根据value查找key
    qDebug() << qmap.key(108);


    //修改键值
    // 一个键对应一个值,再次调用insert()将覆盖之前的值
    qmap.insert("Math",120);
    qDebug() << qmap.value("Math");

    //查询是否包含某个键
    qDebug() << qmap.contains("Math");

    //输出所有QMap实例化
    QList<QString> aKeys=qmap.keys();
    qDebug() << aKeys;

    QList<int> aValues=qmap.values();
    qDebug() << aValues;

    //一个键对应多个值  QMultiMap类来实例化QMap对象
    QMultiMap<QString,QString> mulmap;
    mulmap.insert("student","no");
    mulmap.insert("student","name");
    mulmap.insert("student","sex");
    mulmap.insert("student","age");

    qDebug() << mulmap;

 QHash类

  QHash<Key,T>具有QMap几乎完全相同的API,QHash维护着一张哈希表,哈希表的大小与QHash的数据项的数目相适应。

  QHash以任意的顺序组织它的数据,当存储书的顺序无关紧要时,建议使用QHash作为存放数据的容器。

QHash<QString ,int> qh;
    qh["key 1"]=1;
    qh["key 2"]=2;
    qh["key 3"]=3;
    qh["key 4"]=4;

    qh.insert("key 5",5);

    QList<QString> list=qh.keys();
    qDebug() << list;

    QHash<QString,int>::const_iterator itr;
    for(itr=qh.begin();itr !=qh.end();itr ++){
        qDebug() << itr.key();
    }

QMap和QHash的区别

  • 功能差不多,但QHash查找速度快
  • QMap是按照键的顺序存储数据的,QHash是任意顺序
  • QMap的键必须提供“<”运算符,而QHash的键必须提供“==”运算符和一个名为qHash()的全局三列函数。

QVector类

  QVector<T>在相邻的内存当中存储给定数据类型T的一组数值。在前部或者中间位置进行操作的速度是很慢的,因为这样的操作将导致内存中的大量数据被移动。

QVector<int> qvr;
    
    qvr<<10;
    
    qvr << 20;
    
    qvr.append(30);
    qvr.append(40);
    
    qDebug() << qvr;
    
    for(int i=0;i<qvr.count();i++){
        qDebug() << qvr[i];
    }
    
    //删除
    //    qvr.remove(1);
    //qDebug() << qvr;
    
    //范围删除
    qvr.remove(1,2);
    qDebug() << qvr;

 

标签:QHash,qmap,QVector,qDebug,qh,itr,QMap
From: https://www.cnblogs.com/baisedeyu/p/17848975.html

相关文章

  • QT基础教程(QMap和QHash)
    (文章目录)前言本篇文章将为大家讲解QT中两个非常重要的类:QMap和QHash。QMap和QHash都是Qt框架中用于存储键值对的数据结构,它们提供了快速的查找、插入和删除操作,但在某些方面有一些不同之处。一、QMapQMap是一个有序的键值对容器,它根据键的顺序来存储元素。当您需要按照键的......
  • QT(4)信号、SLOT和QMap - Addressbook例子2
    在之前的MeeGo开发者(五):QT(3)对象和继承小例子基础上,我们增加三个button,参考http://doc.qt.nokia.com/latest/tutorials-addressbook-part2.html、http://doc.qt.nokia.com/latest/tutorials-addressbook-part3.html和http://doc.qt.nokia.com/latest/tutorials-addressbook-part......
  • QMap
    QMap #include<QMap> PublicFunctions QMap() QMap(std::initializer_list<std::pair<Key,T>> list) QMap(constQMap<Key,T>&other) ......
  • QMap 删除指针内容时的一个问题
    在测试代码时,发现一个问题:voidUserManager::removeUser(constQString&name){QMap<QString,User*>::Iteratorit;it=mUsers.find(name);if......
  • QVector初始化二维数组大小
    初始化1维数组的大小QVector<double>array(10);//10个元素,每个都初始化为0初始化2维数组的大小QVector<QVector<double>>array2D(6,QVector<double>(10));//6个元......