(一) java风格迭代器
迭代点位于第一个列表项前面或者列表项的中间或者在最后一个的列表项的后面,不是直接指向某个列表项
容器类 | 只读迭代器类 | 读写迭代器类 |
QList< T >,QQueue< T > | QListIterator< T > | QMutableListIterator< T > |
QLinkList< T > | QLinkListIterator< T > | QMutableLinkListIterator< T > |
QVetor< T >,QStack< T > | QVectorIterator< T > | QMutableVectorIterator< T> |
1. QListIterator类
1. 初始化
QList<int> list;
list<<1<<2<<3<<4<<5;
QListIterator<int> i(list);//指向列表第一项前面
while(i.hasNext())
qDebug()<<i.next();
2. findNext()
bool findNext(const T &value)
从前向后遍历,如果找到值,返回true;否则返回false。且找到后,迭代点是在该元素后面
3. findPrevious()
bool findPrevious(const T &value)
从后向前遍历,如果找到值,返回true;否则返回false,且找到后,迭代点是在该元素前面
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
4. hasNext()
bool hasNext() const
从前向后遍历,如果当前迭代点后面有元素,返回true,否则false
5. hasPrevious()
bool hasPrevious() const
从后向前遍历,如果当前迭代点后面有元素,返回true,否则false
6. next()
const T &next()
会跳过下一列表项(迭代点移动到该列表项之后),并返回他跳过列表项的内容
7.previous()
T &previous()
返回前一个列表项内容,迭代点移动到该列表项之前
8.toBack()
void toBack()
将迭代点移动到最后一个列表项之后
9.toFront()
void toFront()
将迭代点移动到第一个列表项之前
10.peekPrevious()/peekNext()
返回前(后)一个列表项,但不移动迭代点
其他只读类接口和上述相同
3.QMutableListIterator类
有上述接口
1.insert()
void insert(const T &value)
在当前迭代器位置插入值。在调用之后,迭代器就位于插入的项之后。
2.remove()
void remove()
删除使用遍历函数(next()、previous()、findNext()、findPrevious())跳过的项。
3.setValue()
void setValue(const T &value) const
修改使用遍历函数(next()、previous()、findNext()、findPrevious())跳过的项的值。
4.value()
const T &value() const
返回使用其中一个遍历函数(next()、previous()、findNext()、findPrevious())跳过的最后一项的值。在调用next()或findNext()之后,value()相当于peekPrevious()。在调用previous()或findPrevious()之后,value()相当于peekNext()。
5.value()重载
T &value()
这是一个重载函数。返回对使用一个遍历函数跳过的最后一个项的值的非常量引用。
其他读写类接口和上述相同
(二)STL风格迭代器
相当于指针,指向的是列表项(超前或者超尾)
容器类 | 只读迭代器类 | 读写迭代器类 |
QList< T >,QQueue< T > | QListI< T >::const_iterator | QList< T >::iterator |
QLinkList< T > | QLInkListI< T >::const_iterator | QLinkList< T >::iterator |
QVetor< T >,QStack< T > | QVector< T >::const_iterator | QVector< T >::iterator |
例子:
#include <QCoreApplication>
#include <QDebug>
int main(int argc,char* argv[])
{
QCoreApplication a(argc,argv);
QList<int> list;
for(int i=0;i<10;i++)
{
list.insert(list.end(),i);
}
QList<int>::iterator i;
for(i=list.begin();i!=list.end();i++)
{
qDebug()<<(*i);
*i=(*i)*10;
}
qDebug()<<" ";
QList<int>::const_iterator ci;
for(ci=list.constBegin();ci!=list.constEnd();ci++)
{
qDebug()<<(*ci);
}
return a.exec();
}
文章转自博客园(m晴朗):Qt 迭代器 - m晴朗 - 博客园
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓