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

QT中Java与STL风格迭代器的一些区别,foreach关键字 Qlist 的 java风格迭代器,代码如下: #include <QMap> #include <QListIterator> //只读 #include <QMutableListIterator> //读写 #include <QDebug> //测试java风格的迭代器 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QList <QStri 阅读详情

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

运行效果:



性能特性测试系列1——STL容器,QT容器性能相关比较和总结 流程 序qtstl容器对应关系对比图 顺序容器 一 stdvector与QVector 二 stdList与QLinkedList与 QList 三 stddeque 关联容器 一 Stdset 与 QSetstd unordered_set 二stdmap与QMap 三std unordered_map与QHash 四stdmultimap与QMultiMap 容器适配器 阅读详情

相关推荐

Qt入门教程【STL篇】STL分析

Qt中的STL分析

小鱼酱的博客 3062

Qt STL类型迭代器

STL迭代器与Qt和STL的原生算法兼容,并且进行了速度优化;对于每一个容器类,都有两个STL类型迭代器:一个用于只读访问,一个用于读写访问。无需修改数据时建议使用只读迭代器,因为速度更快。下表为类型总表:在定义只读迭代器和读写迭代器时的区别,它们使用了不同的关健字,const_iterator 定义只读迭代器,iterator 定义读写迭代器。此外,还可以使用 const_reverse_iterator 和 reverse_iterator 定义相应的反反向迭代器。STL 类型的迭代器是数组的指针,所以

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 798

【Qt】Qt迭代器和STL迭代器的区别

Qt迭代器和STL迭代器的区别

郭老二 317

一步步学Qt,第九天-Q"STL"与STL-Qvector,vector

一步步学Qt,第九天-Q"STL"与STL-Qvector,vector 这个部分或许没有代码出现,更多的是文字分析,即使会出现也可能就是很简短的部分。今天主要来分析和对比一下Q”STL”与C++的STL,主要讲解他们各自在定义和使用的区别,不仅仅是学习C++的提升也是对Qt与C++STL的结合。 A、QVector<T>与vector<T> 1、对应变量的声明...

weixin_33743248的博客 211

QT 迭代器实例

迭代器提供了一个统一的方法来访问容器中的项目。QT的容器类提供了两种类型的迭代器:jave风格的迭代器和STL风格迭代器。如果只是想按顺序遍历一个容器的项目,可以使用QT的foreach关键字。 1、jave风格的迭代器 #include <QCoreApplication> #include <QList> #include <QListIterator> #...

qq_30725967的博客 1274

HyperLedger Fabric实战(一):基础环境构建

简介 本文将介绍从一台裸机上面如何构建出一个可用的Fabric网络(单机版,非测试网络)。 基础环境构建 Fabric组件安装

yindarui 1万+

qt对stl模型显示的封装

因为qt自身带的标题栏显示有点单调,我们这里使用了自定义标题栏。对外只有两个函数,一个是显示一个是指定文件夹下模型路径。

weixin_48657573的博客 909

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1783

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

一步步学Qt,第十天-Q”STL”与STL-迭代器-补充点 在之前讨论迭代器的时候忘记了一个东西——隐含共享 隐含共享implicit sharing,或叫做“写时复制”。看代码示例: //get values QListIterator ql

Qicz的学习笔记 博客新址:izcqi.com 1059

Coze HTTP请求节点实战:5分钟搞定天气API对接(含动态参数技巧)

本文通过一个天气预报API对接的实战案例,详细讲解了如何在Coze平台使用HTTP请求节点实现外部数据交互。文章重点演示了动态参数传递、JSON响应解析与错误处理等核心技巧,帮助开发者在5分钟内快速构建稳定可靠的智能体外部服务调用能力。

weixin_29233333的博客 676

上证指数30年k线图_金融占星简单解读上证指数30年历史行情

阅读此文需要一定的占星基础知识,本人对于金融知识了解甚少,如有描述错误请包涵指正!影响大众事件发展趋势的都是外行星,即木星-冥王星这5颗,由于时间跨度长达30年,绘制社会行星的K线图工作量太大,所以只以时代行星对这30年行情的简单解读作为分享,在今后的短期分析中会逐渐加入社会行星,甚至在个股分析上还会加入个人行星。那即使只绘制时代行星,所展现出来的信息也无法在一张图上画出来,否则太乱难以分辨,所以...

weixin_39831242的博客 1675

Qt容器 STL类型迭代器的使用

文章目录1.简介2.使用示例3.详细说明4.STL风格迭代器常用API 1.简介 STL风格迭代器兼容Qt和STL的通用算法,而且再速度上进行了优化。每一个容器都有两个STL风格迭代器类型:一个提供了只读访问,另一个提供了读/写访问。 2.使用示例 #include <QCoreApplication> #include <QList> #include <QDebug> #include <QMap> int main(int argc, char *a

超级大洋葱的博客 1598

AgentScope实战训练营:从零搭建一个完整的A2A Agent应用

2024年4月,Google在Google Cloud Next大会上正式提出了A2A(Agent-to-Agent)协议,这是一个开放协议,旨在让不同的AI Agent之间能够像微服务一样相互发现、相互调用。通俗地讲:A2A协议就是AI Agent世界的HTTP协议——有了它,一个Agent可以把自己的能力以标准化的方式暴露出去,另一个Agent可以无缝地发现并调用它。本文将基于阿里巴巴开源的(Apache 2.0协议),手把手带你从零搭建一个完整的A2A Agent应用。

program哲学 564

Qt迭代器详解

Qt迭代器详解摘要 Qt提供了两种迭代器风格:Java风格(简单安全)和STL风格(高效灵活)。Java风格迭代器分为只读和可变两种,适合线程安全场景和简单遍历;STL风格迭代器性能更高,支持随机访问和反向遍历,语法与C++标准库一致。关键区别在于:Java风格通过hasNext()/next()遍历,STL风格使用begin()/end()和指针操作。特殊场景如QMap键值遍历、迭代器失效处理(修改容器时需特别注意)均有对应解决方案。最佳实践建议:小数据用Java风格,高性能需求用STL风格,C++11推

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 1956

无需SLAM建图,直接生成Gazebo仿真环境的二维代价地图的功能包pgm_map_creator适配ROS Noetic编译报错及解决方法

在ROS Noetic中,使用`pgm_map_creator`功能包直接生成Gazebo仿真环境的二维代价地图时,可能会遇到各种编译和运行错误。本篇博客详细解析了在适配ROS Noetic过程中常见的报错及其解决方法,包括Boost文件结构更新、C++版本兼容性、Gazebo函数名变更、链接库缺失以及protobuf文件加载错误。通过逐步排查和修改,如更换头文件路径、调整C++标准、更新CMakeLists.txt文件等,成功解决了这些问题,使得`pgm_map_creator`功能包能够顺利编译和运行。

慕羽★的博客 2261

一文搞懂LDO !

Start-up 时间是 IC 做死的,如果想要延时启动,最简单的办法是在 EN 上接一个大一些的电容到地,构成一个简单的 RC 电路。电容太小,电压跌落大,响应快。输出电流高,功率大;外围器件少,电路简单,成本低,负载响应快,输出纹波小;将采集的电压输入到比较器反向输入端,与正向输入端的基准电压(期望输出的电压)进行比较,再将比较结果进行放大;是指在给定负载变化下的输出电压的变化,这里的负载变化通常是从无负载到满负载。芯片的静态电流大小与其他性能成反关系,如低噪声,高电源电压抑制比,静态电流大。

weixin_46969363的博客 4384

Qt中关于STL迭代器的数据删除操作

主要是记录一下关于Qt中STL删除数据元素的一些常见问题 使用remove接口删除:   STL中提供的删除接口remove并不是真正意义上的删除操作,而是使用下一个元素来替换当前元素,待删除的目标元素仍然存在;如果我们确信要删除某些元素时,需要使用erase接口去删除; 使用erase接口删除:   当使用这个接口去删除元素数据时,会改变迭代器的指向,目标元素被删除后,指向该元素的迭代器会自动指...

愤怒的狸猫 的博客 1612

Google Earth Engine :处理Sentinel-1 GRD SAR数据以估算田间尺度土壤湿度的工作流程(计算双极化雷达植被指数(DpRVIc)和VV极化后向散射强度(VVdB))

本文介绍了利用Google Earth Engine (GEE)处理Sentinel-1 SAR数据估算田间土壤湿度的方法。工作流程包括:定义研究区域并筛选指定日期、轨道参数的Sentinel-1图像;预处理计算双极化雷达植被指数(DpRVIc)和VV极化后向散射强度(VVdB),通过均值滤波降噪并去除无效像素;结合动态世界数据集掩膜水体/城市区域;最终导出时序GeoTIFF文件。DpRVIc基于双极化后向散射系数比,对植被结构敏感,而VVdB反映地表反射特性,二者结合可有效评估土壤湿度。该方法适用于农业监

此星光明博客 383

【Qt开发流程】之容器类2:使用STL风格迭代器进行遍历

【Qt开发流程】之容器类2:使用STL风格迭代器进行遍历

FreeLikeTheWind的博客 1479

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Qt迭代器(Java类型和STL类型)介绍

遍历一个容器可以使用迭代器(iterators)来完成,迭代器提供了一个统一的方法来访问容器中的元素。而Qt的容器类提供了两种类型的迭代器:Java风格迭代器和STL风格迭代器对于每个容器类,有两个 Java 类型迭代器:一个用于只读操作,一个用于读写操作,各个Java 类型的容器类见表 1。 使用,正向遍历 反向遍历 QList移除QListIterator没有提供从list中插入或移除项的函数,想要实现插入和移除,你必须使用QMutableListIterator。下面举例说明使用QMutab

sinat_31608641的博客 1289

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

QT 隐式共享机制对STL样式迭代器的影响

最佳实践: 隐式共享对STL样式的迭代器有另一个影响:当迭代器在该容器上处于活动状态时,应避免复制容器。 迭代器指向内部结构 不要在使用了隐式数据共享的容器上,在有非 const STL 风格的遍历器正在遍历时复制容器 #include <QCoreApplication> #include <QVector> #include <QtDebug> int main(int argc, char *argv[]) { QCoreApplicatio

断点 596

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Qt STL 与 C++ STL 的区别剖析

Qt STL 和 C++ STL 各有特点,在不同的应用场景下都能发挥重要作用。C++ STL 以其通用性、高效性和严格的标准遵循,成为各种 C++ 项目的基础工具。而 Qt STL 则凭借与 Qt 框架的紧密集成、易用性和针对 Qt 应用开发的优化,在 Qt 项目中具有独特的优势。开发者在实际编程中,应根据项目的具体需求、性能要求以及与其他模块的协作方式,合理选择使用 C++ STL 或 Qt STL,以实现高效、稳定的软件开发。

AC的博客 882
上一篇: 一步步学Qt,第九天-Q”STL”与STL-再看C++
下一篇: 个人blog已经开通
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值