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();
}