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

QTJavaSTL风格迭代器的一些区别,foreach关键字 Qlistjava风格迭代器,代码如下: #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容器对应关系对比图 顺序容器 一 stdvectorQVector 二 stdListQLinkedList QList 三 stddeque 关联容器 一 Stdset QSetstd unordered_set 二stdmapQMap 三std unordered_mapQHash 四stdmultimapQMultiMap 容器适配器 阅读详情

相关推荐

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

Qt中的STL分析

小鱼酱的博客 3040

Qt STL类型迭代器

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

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

js逆向实战:爬取淘宝男装商品

本文介绍了一个淘宝商品数据爬取程序的技术实现方案。该程序通过分析淘宝H5页面接口,实现了商品名称、价格、销量等关键信息的抓取,并支持图片下载功能。核心内容包括:1. 使用Request库发送HTTP请求获取数据;2. 通过逆向分析淘宝的签名算法(MD5加密)生成合法请求;3. 解析JSON数据并提取商品信息;4. 处理分页参数实现多页数据爬取;5. 将数据保存为CSV文件并下载商品图片。程序还实现了反爬虫绕过、错误处理、文件管理等辅助功能,完整展示了从数据采集到存储的全过程。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1558

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

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

weixin_33743248的博客 211

qtstl模型显示的封装

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

weixin_48657573的博客 906

一步步Qt第十天-Q”STLSTL-迭代器-补充点

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

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

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

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

超级大洋葱的博客 1591

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 框架。方便软硬件开发者查阅学习。欢迎关注! 1934

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

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

愤怒的狸猫 的博客 1607

QT】容器类的迭代

Qt两种迭代器类,Java类型的迭代器STL类型的迭代器的基本介绍

u011671745的博客 1169

Qt 迭代器(的两种风格,及方法简介)

Qt 迭代器(的两种风格,及方法简介)

ken2232的博客 1175

C++ STLQt容器对比

Qt/C++混编的场景到底该选择哪家的容器

x2528238270的博客 1882

qt中容器和C++标准模版库(STL)中容器的区别

项目中用到C+11基于范围的for循环中发现auto自动推导的qmap和标准库的std::map类型有所不同。百度对比了这两者在表示形式上和效率上的区别。没去验证正确性,只是大概做了下了解。 http://blog.csdn.net/u011822862/article/details/46377275 https://www.zhihu.com/question/50156390 //翻译...

lsfreeing的专栏 2677

QTLSTL对比

作者:诸葛不亮 链接:https://www.zhihu.com/question/50156390/answer/119663575 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 Qt的容器类具体分析可见官方文档:http://doc.qt.io/qt-5.7/containers.html 里面有关于时间复杂度、迭代器等各方面的概述和表格对比 各个容器的具体实现,可以

高原 3061

qt c++ stl

STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于ST

abc 2340

HBase在物流行业的应用:轨迹数据存储

想象一下,每天在全球范围内,数以亿计的物流包裹在各个城市、乡镇间穿梭。每一个包裹从发货人手中出发,经过仓储中心、转运站,最终到达收货人手中,这一路上都留下了它的“足迹”,也就是我们所说的轨迹数据。这些数据就像一个个拼图碎片,完整拼接起来后,能够清晰地呈现出整个物流网络的运行状况。例如,你在网上购买了一件心仪已久的商品,迫不及待地想知道它现在到哪儿了。物流平台实时更新的轨迹信息,让你可以准确了解包裹是在运输途中,还是已经到达附近的站点。

架构师的AI之路,分享AI应用开发架构的学习与实践。 939

《信息奥赛一本通·编程启蒙 C++版》1-86课(2023.11.03).pdf

《信息奥赛一本通·编程启蒙 C++版》1-86课(2023.11.03)

上一篇: 一步步学Qt,第九天-Q”STL”与STL-再看C++
下一篇: 个人blog已经开通
Qicz
博客等级 码龄15年 56粉丝 122原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值