您的位置:首页 > 编程语言 > Qt开发

一步步学Qt,第十天-Q”STL”与STL-迭代器

2011-09-02 10:02 337 查看

一步步学Qt,第十天-Q”STL”与STL-迭代器

Qt提供了两类的迭代器,Java风格的和STL风格的。她们各自有自己的优势,使用java风格易于使用,使用STL风格的易于与STL的一些算法结合功能变得更加强大。

Java风格的迭代器,要知道他们本身不是直接指向项的,而是在第一项之前,最后以前之后或在两项之间:



在Java风格的迭代器中,hasNext()这个函数,与在Java数据库操作中的next()有相通之处,hasNext函数在当前迭代器之后还有项存在的话,就会返回一个true,数据库操作的next函数也是这样,不过next不仅是这样。当在当前位置之后还有项存在,next函数返回true,并指向下一个位置,之后在来判断新位置的下一个位置是否有数据项,这样一直到结束。而在Qt中Java风格的迭代器的next函数与Java数据库操作有相同之处,也有不同之处。Qt中的next函数,不仅会将迭代器移动到下一个项,而且会返回在移动之前的迭代器所在位置之后的那个项的值:



看一个小小的code:

QListIterator<int> qlistIterator(list);
while(qlistIterator.hasNext()){
cout << qlistIterator.next() << setw(2);
}
cout << endl;
在while中利用next获取了qlistIterator位置下面的一个项的值,并且走到下一个项之前的位置(一定记住,Iterator是在项与项之间的位置上)

完整code:

#include <QtCore/QCoreApplication>
#include <QList>
#include <QListIterator>
#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList<int> list;
//set values
int var = 0;
for(int i=0; i<3; i++){
cout << "Enter var's value:";
cin >> var;
list.append(var);
}
//get values
QListIterator<int> qlistIterator(list); while(qlistIterator.hasNext()){ cout << qlistIterator.next() << setw(2); } cout << endl;
return a.exec();
}


运行效果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: