qt容器类有两种:一种是连续容器类,另一种是关联容器类( 具体的看说明书用法)
可以是int、double、指针类型、QByteArray、QDateTime、QRegExp、QString和QVariant类
第一:连续容器类——连续的存储项(具有迭代器iterator对象)QVector、QLinkedList、QList、
1.QVector类——动态数组类。是个向量类,如果预先知道有多少项,就可以在动态数组中确定初始化的大小
例:QVector integerVector(20); QVector类动态数组中存储了20个整数。
integerVector.append("21"),就是将"21"这个值插入到素组的第21位,即integerVector[20]=21;也可以使用<<来代替append。
QVector类还可以引用QVector integerVector(20); QVector integerVector(20);等。
QVector vector(200, "Pass");初始化字符串。相当于vector[200]="Pass";
for (int i = 0; i < vector.size(); ++i) {
if (vector.at(i) == "Alfonso")
cout << "Found Alfonso at position " << i << endl;
}//vector.at(i)相当于vector.[i]='Alfonso',可以通过at(i),确定i的位置。 vector.size();数组的长度
const T & QVector::at ( int i ) const 返回i在QVector类数组中的位置
//在数组中间插入值void QVector::insert ( int i, const T & value )
QVector vector;
vector << "alpha" << "beta" << "delta";
vector.insert(2, "gamma");
// vector: ["alpha", "beta", "gamma", "delta"]
QStack堆栈向量,Inherits类QVector,提供push、pop等。
2.QLinkedList类,链表类(利用迭代器)
//迭代器(iterator)是一种对象,它能够用来遍历STL容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
QList类 :提供了一个数组列表
例如 QList list;
list << "one" << "two" << "three";就相当于数组list[0]、list[1]、list[2]、的值。//相当于设定数值的值。
其中类QStringList Inherits与它。
3、迭代器类型(java风格)
上面的几个容器类分别对应各自本身的迭代器(自读和读写迭代器)
QListIterator类迭代器(只读迭代器,没有插入、写该、删除等功能) QLinkedListIterator类迭代器 QVectorIterator类迭代器
QList list;
...
QListIterator i(list);
while (i.hasNext()) //i是表示数组的地址
qDebug() << i.next();打印i下一个地址的数值
QMutableListIterator(读写迭代器) QMutableLinkedListIterator QMutableVectorIterator
QList list;
QMutableListIterator i(list);
while (i.hasNext()) {
int val = i.next();
if (val < 0) {
i.setValue(-val); //遍历所有的项,如果有值小于0,那么就取绝对值
} else if (val == 0) {
i.remove(); //遍历所有的项,如果有值为0,就删除
}
}
4、迭代器类型(STL风格)
QList list;
list.append("January");
list.append("February");
...
list.append("December");
QList::iterator i; //QList类STL迭代器风格
for (i = list.begin(); i != list.end(); ++i) //if(!list.isEmpty())
cout << *i << endl; //输出了list列表的值
5、foreach
例:
QList list;
list << "caterpillar" << "momor" << "bush"; // foreach (variable, container)
foreach(QString str, list) { //遍历list链表,foreach按照标准for循环实现
qDebug()<< str; //将list列表中的项目都打印出来。
}
//重点网页
阅读(7823) | 评论(0) | 转发(0) |