一步步学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();
}
运行效果:
相关文章推荐
- 一步步学Qt,第十天-Q”STL”与STL-迭代器
- 一步步学Qt,第十天-Q”STL”与STL-迭代器-补充点
- 一步步学Qt,第十天-Q”STL”与STL-迭代器-补充点
- 一步步学Qt,第九天-Q"STL"与STL-Qvector,vector
- 一步步学Qt,第九天-Q”STL”与STL-再看C++
- 一步步学Qt,第九天-Q”STL”与STL-再看C++
- 一步步学Qt,第十天-MYSQL数据库操作
- 一步步学Qt,第十天-MYSQL数据库操作
- Qt的两种迭代器(Java和STL)
- Qt容器类及其遍历(Java风格和STL风格迭代器)
- 一步步学Qt,第九天-Q"STL"与STL-Qvector,vector
- STL笔记(2)-vector,迭代器具体用法介绍
- STL之--插入迭代器(back_inserter,inserter,front_inserter的区别)
- 【STL】 map、hash_map、迭代器
- QT中迭代器的原理
- STL的迭代器--Iterator
- STL之迭代器及traits编程
- STL容器迭代器失效问题讨论
- C++标准模板库(STL)迭代器的原理与实现
- STL 迭代器