Qhash简介Qhash是无序的插入的顺序和输出的顺序并不相同。voidWidget::on_pushButton_clicked(){QHashint,QStringm_hash;m_hash.insert(1,tanglin);m_hash.insert(2,renyong);m_hash.insert(3,wenqiang);m_hash.insert(4,laowang);foreach(QString value,m_hash){qDebug()value;}}//第一次调试输出wenqiangrenyongtanglinlaowang//第二次调试输出tanglinlaowangwenqiangrenyong2.Qhash如果插入相同的key,则后面的 key,value 将覆盖前一次的 key,valuevoidWidget::on_pushButton_2_clicked(){QHashint,QStringm_hash;m_hash.insert(4,laowang);m_hash.insert(4,libai);qDebug()m_hash.value(4);}//输出libai自定义数据类型#ifndefWIDGET_H#defineWIDGET_H#includeQWidgetnamespaceUi{classWidget;}classWidget:publicQWidget{Q_OBJECTpublic:explicitWidget(QWidget*parent0);~Widget();privateslots:voidon_pushButton_clicked();voidon_pushButton_2_clicked();voidon_pushButton_3_clicked();voidon_pushButton_4_clicked();private:Ui::Widget*ui;};structmyDate{private:intage;QString name;public:inlinebooloperator(constmyDateother)const{return(this-ageother.agethis-nameother.name);}myDate(intage,QString name){this-ageage;this-namename;}myDate(){this-age20;this-namelibia;}};#endif// WIDGET_H#includewidget.h#includeui_widget.h#includeQMap#includeQHash#includeQString#includeQDebug#includeQListWidget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui-setupUi(this);//定义一个map容器QMapint,QStringmap;//向map容器里面插入数据map.insert(1,tanglin);map.insert(2,renyong);map.insert(3,yongxiang);//读取数据QString temp;tempmap.value(1);qDebug()temp;//返回key和value的列表QListintkeylistmap.keys();foreach(intkey,keylist){qDebug()key;}QListQStringvalueListmap.values();// foreach (QString value, valueList) {// qDebug() value;// }}Widget::~Widget(){deleteui;}voidWidget::on_pushButton_clicked(){QHashint,QStringm_hash;m_hash.insert(1,tanglin);m_hash.insert(2,renyong);m_hash.insert(3,wenqiang);m_hash.insert(4,laowang);foreach(QString value,m_hash){qDebug()value;}}voidWidget::on_pushButton_2_clicked(){QHashint,QStringm_hash;m_hash.insert(4,laowang);m_hash.insert(4,libai);qDebug()m_hash.value(4);}//查找voidWidget::on_pushButton_3_clicked(){QHashint,QStringm_hash;m_hash.insert(1,tanglin);m_hash.insert(2,renyong);m_hash.insert(3,wenqiang);m_hash.insert(4,laowang);autoitm_hash.find(3);if(it!m_hash.end()){qDebug()it.value();}}//自定义数据类型voidWidget::on_pushButton_4_clicked(){//QHash 使用自定义数据结构作为key需要该自定义数据结构重写了 operator 运算符还要求有一个全局的 uint qHash(const Student key, uint seed 0)函数QHashmyDate,QStringm_hash;m_hash.insert(myDate(),good);m_hash.insert(myDate(11,nihao),bad);qDebug()m_hash.value(myDate());}uintqHash(constmyDateselt,uint seed){return100^seed;}QMap 简介QMap是有序的classStudent{public:Student(intnAge,constQStringsName);~Student();//inline bool operator(const Student student) const;inlinebooloperator(constStudentstudent)const{if(this-m_nAge!student.m_nAge){returnthis-m_nAgestudent.m_nAge;}returnthis-m_sNamestudent.m_sName;}inlineintgetAge()const{returnm_nAge;}inlineQStringgetName()const{returnm_sName;}private:intm_nAge;QString m_sName;};使用QMap用自定义数据作为key只需要重载operator需要严格弱序
阅读完成 · 觉得有帮助?