QT容器类

QList<T>

是一个指针数组,可以使用下标

append(), prepend(), insert()

QList<QString> list;
list<<"a"<<"b"<<"c";
qDebug()<<list[0]; QList
<QString>::iterator i; //定义读写迭代器 for(i=list.begin(); i!=list.end(); ++i) { qDebug()<<(*i); *i="x"; }

 

QLinkedList<T>

是一个链表,所以不能使用下标,只能使用迭代器访问数据项

 

QVector<T>

在相邻的内存中存储一组数值,在前部或中间插入数据是很慢的,需要移动后面的所有数据。

既可以用下标,也可以用迭代器访问。子类有QPolygon, QPolygonF和QStack.

 

QMap<key, T>

QMap<QString, int> map;
map.insert("beijing", 123);
map.insert("shanghai", 456);
map.insert("guangzhou", 789);
QMap<QString, int>::const_iterator i;//只读迭代器
for(i=map.constBegin(); i!=map.constEnd();++i)
{
  qDebug()<<i.key()<<","<<i.value();  
}
QMap<QString, int>::iterator mi;//读写迭代器
mi=map.find("beijing");
if(mi!=map.end())
{
  mi.value()=321;  
}

 

QMap与QHash比较

QHash以任意顺序存储,QMap按key键顺序存储

单次操作QMap快,多次操作QHash快

 

QVariant

QVariant v(709);//定义一个变量并初始化为709
qDebug<<v.toInt();
QVariant w("hello");
qDebug<<w.toString();
QMap<QString, QVariant>map;
map["int"]=709;
map["double"]=709.9;
map["string"]="hello";
map["color"]=QColor(255,0,0);
qDebug()<<map["int"]<<map["int"].toInt();

posted on 2019-08-21 09:43  万里驰骋  阅读(206)  评论(0编辑  收藏  举报

导航