QVector 容器
- QVector在相邻的内存中存储给定数据类型T的一组数据。在QVector前部或中间位置插入操作速度都很慢,因会导致内存中大量的数据移动。访问数据可使用下标,也可使用迭代器。继承自QVector类的子类有QPolygon、QPolygonF、QStack。
//定义一个vector容器
QVector<QString> vStarts;
//添加元素
vStarts << "张三";
vStarts << "李四";
vStarts.append("王五"); //尾部添加元素
vStarts.prepend("李一"); //头部插入元素
vStarts.insert(2, "周八"); //在位置2插入元素
//删除元素
vStarts.removeOne("周八");
//查找元素
qDebug() << "第2个名字: " << vStarts.at(2);
qDebug() << "是否有张三: " << vStarts.contains("张三");
//java风格只读访问
QVectorIterator<QString> it_java(vStarts);
for(it_java.toFront(); it_java.hasNext(); ){
qDebug() <<it_java.next();
}
//修改元素
vStarts.replace(1, "法外狂徒张三");
//java风格读写访问
QMutableVectorIterator<QString> it_java_const(vStarts);
for(it_java_const.toFront(); it_java_const.hasNext(); ){
qDebug() <<it_java_const.next();
}
//STL风格只读访问
QVector<QString>::const_iterator it_const = vStarts.constBegin();
for(; it_const != vStarts.constEnd(); it_const++){
qDebug() << *it_const;
}
//STL风格读写访问
QVector<QString>::iterator it_start = vStarts.begin();
for(; it_start != vStarts.end(); it_start++){
qDebug() << *it_start;
}