Qt工作笔记-QMap的进一步操作

QMap可以放如下类型的数据(key里面放一个类)



clear前,内部数据析构后



代码如下:

#include <QApplication>
#include <QMap>
#include <QVector>
#include <QDebug>

class DoubleBus{
public:
    DoubleBus(const qint64 key1,const qint64 key2){
        m_key1=key1;
        m_key2=key2;
    }

    qint64 m_key1;
    qint64 m_key2;
};

class Element{
public:
    Element(const qint64 keyId,const QString key){
        m_keyId=keyId;
        m_key=key;
    }

    qint64 m_keyId;
    QString m_key;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMap<DoubleBus*,QVector<Element*>> m_myMap;

    DoubleBus *doubleBus1=new DoubleBus(100000,100001);
    DoubleBus *doubleBus2=new DoubleBus(200000,200001);

    QVector<Element*> myEleVec1;
    myEleVec1.append(new Element(100,"类型一"));
    myEleVec1.append(new Element(101,"类型二"));
    myEleVec1.append(new Element(102,"类型一"));
    myEleVec1.append(new Element(103,"类型二"));
    m_myMap.insert(doubleBus1,myEleVec1);

    QVector<Element*> myEleVec2;
    myEleVec2.append(new Element(200,"类型一"));
    myEleVec2.append(new Element(201,"类型二"));
    myEleVec2.append(new Element(202,"类型二"));
    myEleVec2.append(new Element(203,"类型一"));
    m_myMap.insert(doubleBus2,myEleVec2);



    //析构
    QMapIterator<DoubleBus*,QVector<Element*>> it(m_myMap);
    while(it.hasNext()){
        it.next();
        for(int i=0;i<it.value().size();i++){
            delete it.value()[i];
        }
        delete it.key();
    }

    m_myMap.clear();


    return a.exec();
}


猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/80921359