您的位置:首页 > 编程语言 > Qt开发

Qt容器类

2016-07-01 10:21 363 查看

Qt容器类

By Xchen 20160629

Qt提供一组通用的基于模板的容器类。

常见的Qt容器类为QListQ、LinkedList、QVector、QMap、QHash。

Qt容器类的两种风格迭代器

Java-style iterators

STL- style iterators

example01: QList & QListIterator只读迭代器Java

#include <QDebug>
int main(int argc,char *argv[])
{
QList<int> list;
list<<1<<2<<3<<4<<5;
QListIterator<int> i(list);
for(;i.hasNext();)
qDebug()<<i.next();
return 0;
}


example02: QList & QMutableListIterator读写迭代器Java

#include <QDebug>
int main(int argc,char *argv[])
{
QList<int> list;
QMutableListIterator<int> i(list);
for(int j=0;j<10;++j)
i.insert(j);
for(i.toFront();i.hasNext();)
qDebug()<<i.next();
for(i.toBack();i.hasPrevious();)
{
if(i.previous()%2==0)
i.remove();
else
i.setValue(i.peekNext()*10);
}
for(i.toFront();i.hasNext();)
qDebug()<<i.next();
return 0;
}


example03: QList & QList::iterator迭代器STL

#include <QDebug>
int main(int argc,char *argv[])
{
QList<int> list;
for(int j=0;j<10;j++)
list.insert(list.end(),j);
QList<int>::iterator i;
for(i=list.begin();i!=list.end();++i)
{
qDebug()<<(*i);
*i=(*i)*10;
}
QList<int>::const_iterator ci;
for(ci=list.constBegin();ci!=list.constEnd();++ci)
qDebug()<<*ci;
return 0;
}


example04: QMap & QMapIterator & QMutableMapIterator迭代器Java

#include <QDebug>
int main(int argc,char *argv[])
{
QMap<QString,QString> map;
map.insert("beijing","111");
map.insert("shanghai","021");
map.insert("nanjing","025");
QMapIterator<QString,QString> i(map);
for(;i.hasNext();)
qDebug()<<"  "<<i.key()<<"  "<<i.next().value();
QMutableMapIterator<QString,QString> mi(map);
if(mi.findNext("111"))
mi.setValue("010");
QMapIterator<QString,QString> modi(map);
qDebug()<<"  ";
for(;modi.hasNext();)
qDebug()<<" "<<modi.key()<<"  "<<modi.next().value();
return 0;
}


example05: QMap::iterator & QMap::const_iterator迭代器STL

#include <QDebug>
int main(int argc,char *argv[])
{
QMap<QString,QString> map;
map.insert("beijing","111");
map.insert("shanghai","021");
map.insert("nanjing","025");
QMap<QString,QString>::const_iterator i;
for(i=map.constBegin();i!=map.constEnd();++i)
qDebug()<<"  "<<i.key()<<"  "<<i.value();
QMap<QString,QString>::iterator mi;
mi=map.find("beijing");
if(mi!=map.end())
mi.value()="010";
QMap<QString,QString>::const_iterator modi;
qDebug()<<"  ";
for(modi=map.constBegin();modi!=map.constEnd();++modi)
qDebug()<<"  "<<modi.key()<<"  "<<modi.value();
return 0;
}


example06: QVariant

Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QVariant v(709);
qDebug()<<v.toInt();
QVariant w("How are you! ");
qDebug()<<w.toString();
QMap<QString,QVariant>map;
map["int"]=709;
map["double"]=709.709;
map["string"]="How are you! ";
map["color"]=QColor(255,0,0);
qDebug()<<map["int"]<< map["int"].toInt();
qDebug()<<map["double"]<< map["double"].toDouble();
qDebug()<<map["string"]<< map["string"].toString();
qDebug()<<map["color"]<< map["color"].value<QColor>();
QStringList sl;
sl<<"A"<<"B"<<"C"<<"D";
QVariant slv(sl);
if(slv.type()==QVariant::StringList)
{
QStringList list=slv.toStringList();
for(int i=0;i<list.size();++i)
qDebug()<<list.at(i);
}
}

Widget::~Widget()
{

}


example07: QtAlgorithm和QtGlobal模块中包含的函数和算法

#include <QDebug>
int main(int argc,char *argv[])
{
double a=-19.3,b=9.7;
double c=qAbs(a);        //c=19.3
double max=qMax(b,c);    //max=c=19.3

int bn=qRound(b);        //bn=10
int cn=qRound(c);        //cn=19

qDebug()<<"a="<<a;
qDebug()<<"b="<<b;
qDebug()<<"c=qAbs(a)= "<<c;
qDebug()<<"qMax(b,c)= "<<max;
qDebug()<<"bn=qRound(b)= "<<bn;
qDebug()<<"cn=qRound(c)= "<<cn;

qSwap(bn,cn);
qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<" cn="<<cn;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 迭代器