Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286073
  • 博文数量: 59
  • 博客积分: 1346
  • 博客等级: 中尉
  • 技术积分: 461
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-06 17:17
文章分类

全部博文(59)

文章存档

2012年(9)

2011年(50)

分类: C/C++

2011-08-17 14:18:28

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) |
给主人留下些什么吧!~~