(一) 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,且找到后,迭代点是在该元素前面

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();
}

Qt 迭代器的更多相关文章

  1. Qt迭代器(Java类型和STL类型)详解

    迭代器为访问容器类里的数据项提供了统一的方法,Qt 有两种迭代器类:Java 类型的迭代器和 STL 类型的迭代器. 两者比较,Java 类型的迭代器更易于使用,且提供一些高级功能,而 STL 类型的 ...

  2. Qt中常用知识点

    1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...

  3. Qt容器类之二:迭代器

    一.介绍 遍历一个容器可以使用迭代器(iterators)来完成,迭代器提供了一个统一的方法来访问容器中的项目.Qt的容器类提供了两种类型的迭代器:Java风格迭代器和STL风格迭代器.如果只是想按顺 ...

  4. Qt容器类——1. QList类、QLinkedList类和QVector类

    在开发一个较高性能需求的应用程序时,程序员会比较关注这些容器类的运行效率,表2.1列出了QList.QLinkedList和QVector容器的时间复杂度比较. 1.QList类 QList<T ...

  5. Qt开发中的实用笔记三--关于各种类的零碎知识点:

    1,QUuid()创建唯一标识码,在创建数据库实体ID和链接数据库QSqlDatabase时非常方便 2,QScrollArea与QScrollBar,如果是要在widget中添加窗口滑动QScrol ...

  6. OAF_开发系列29_实现OAF中批次处理迭代器RowSet/RowSetIterator(案例)

    20150814 Created By BaoXinjian

  7. QT 网络编程一

    QT如果要进行网络编程首先需要在.pro中添加如下代码:QT += network 在头文件中包含相关头文件 #include <QHostInfo> #include <QNetw ...

  8. Qt学习笔记常用容器

    主要说Qt的以下几种容器 1.QList<T> 2.QLinkedList<T> 3.Map<T> 和一些常用的容器方法的使用 qSort qCopy qFind ...

  9. Qt之课外实践——文件操作(简单清道夫)

    说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的 ...

  10. Qt之Concurrent Map和Map-Reduce

    简述 QtConcurrent::map().QtConcurrent::mapped()和QtConcurrent::mappedReduced()函数在一个序列中(例如:QList或QVector ...

随机推荐

  1. 【WebGL系列-03】获取shader变量地址及赋值

    获取shader变量地址及赋值 上一节创建了WebGL程序对象,创建好program对象后,对象中包含顶点着色器和片元着色器,着色器中含有变量,我们需要对其进行赋值后才能够进行绘制. 着色器代码如下: ...

  2. [自然语言处理] 自然语言处理库spaCy使用指北

    spaCy是一个基于Python编写的开源自然语言处理库.基于自然处理领域的最新研究,spaCy提供了一系列高效且易用的工具,用于文本预处理.文本解析.命名实体识别.词性标注.句法分析和文本分类等任务 ...

  3. 使用Docker安装Apollo并使用SpringBoot连接配置中心

    上篇文章我们学习了Apollo的本地安装,如果还不会本地安装的朋友可以查看之前的文章进行了解和学习链接地址(https://www.cnblogs.com/eternality/p/17583023. ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (68)-- 算法导论6.5 7题

    文心一言 VS 讯飞星火 VS chatgpt (68)-- 算法导论6.5 7题 七.试说明如何使用优先队列来实现一个先进先出队列,以及如何使用优先队列来实现栈(队列和栈的定义见 10.1 节.) ...

  5. 基于 Habana Gaudi 的 Transformers 入门

    几周前,我们很高兴地 宣布 Habana Labs 和 Hugging Face 将开展加速 transformer 模型的训练方面的合作. 与最新的基于 GPU 的 Amazon Web Servi ...

  6. [golang]使用logrus自定义日志模块

    简介 logrus是一个第三方日志库,性能虽不如zap和zerolog,但方便易用灵活.logrus完全兼容标准的log库,还支持文本.JSON两种日志输出格式. 特点 相较于标准库,logrus有更 ...

  7. Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用

    Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用 1. 什么是Dropdown组件? Dropdown(下拉菜单)是Unity UGUI中的一个常用组件,用于在用户点击或选择时显示一 ...

  8. XL-Formula流式统计运算方式配置说明

    1.简介 XL-Formula是一种用于描述流式统计运算方式的配置标准,它代表着一种通用型流式统计系统的实现方法,更深层次它代表着一种以通用型流式统计技术为切入点,低成本实现企业数据化运营的理念.该配 ...

  9. 【译】ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

    .NET Core 3.1 Preview 1现在可用.此版本主要侧重于错误修复,但同时也包含一些新功能. 这是此版本的ASP.NET Core的新增功能: 对Razor components的部分类 ...

  10. Building-Mobile-Apps-with-Ionic-2中文翻译工作

    最近没啥工作量, 然后学完了这本书, 接着又茫然找不到该干啥, 所以想着何不翻译这个书呢. 这本书首先给我们普及了Ionic 2的基础知识, Ionic 2和Ionic 1有本质上的区别, Ionic ...