Qt容器类
2016-07-01 10:21
363 查看
Qt容器类
By Xchen 20160629Qt提供一组通用的基于模板的容器类。
常见的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学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Ruby中的迭代器详解
- Ruby中Block和迭代器的使用讲解
- Lua中的迭代器浅析
- Lua中的迭代器和泛型for介绍
- 深入解读Lua中迭代器与泛型for的使用
- C#特性-迭代器(上)及一些研究过程中的副产品
- C#迭代器模式(Iterator Pattern)实例教程
- 详解C++中的vector容器及用迭代器访问vector的方法
- Lua中的迭代器和泛型for学习总结
- C#特性 迭代器(下) yield以及流的延迟计算
- Qt定时器和随机数详解
- ruby 迭代器使用方法
- 使用迭代器 遍历文件信息的详解
- PHP迭代器的内部执行过程详解
- Qt实现图片移动实例(图文教程)
- C#中使用迭代器处理等待任务