遍历qvector_Qt容器类——1. QList类、QLinkedList类和QVector类
在开发一个较高性能需求的应用程序时,程序员会比较关注这些容器类的运行效率,表2.1列出了QList、QLinkedList和QVector容器的时间复杂度比较。
1.QList类
QList是迄今为止最常用的容器类,它存储给定数据类型T的一列数值。
QList不仅提供了可以在列表进行追加的QList::append()和Qlist::prepend()函数,还提供了在列表中间完成插入操作的函数QList::insert()。
QList维护了一个指针数组,该数组存储的指针指向QList存储的列表项的内容。
对于不同的数据类型,QList采取不同的存储策略,存储策略有以下几种。
(1)如果T是一个指针类型或指针大小的基本类型(即该基本类型占有的字节数和指针类型占有的字节数相同),QList会将数值直接存储在它的数组中。
(2)如果QList存储对象的指针,则该指针指向实际存储的对象。
下面举一个例子:
#include
int main(int argc,char *argv[])
{
QList list;
{
QString str("This is a test string");
list<
}
qDebug()<
return 0;
}
2.QLinkedList类
QLinkedList是一个链式列表,它以非连续的内存块保存数据。
QLinkedList不能使用下标,只能使用迭代器访问它的数据项。
3.QVector类
QVector在相邻的内存中存储给定数据类型T的一组数值。
QVector既可以使用下标访问数据项,也可以使用迭代器访问数据项。
4.Java风格迭代器遍历容器
Java风格的迭代器是Qt 4新加入的一个功能。 对于每一个容器类,Qt都提供了两种类型的Java风格迭代器数据类型,即只读访问和读写访问,其分类见表2.2。
5.STL风格迭代器遍历容器
对于每一个容器类,Qt都提供了两种类型的STL风格迭代器数据类型:一种提供只读访问;另一种提供读写访问。STL风格迭代器的两种分类见表2.3。
Qt容器类的对象模型及应用(线性结构篇:对于QList来说,sharable默认是false的,但对于接下来讲的QVector来说,sharable默认是true)
用Qt做过项目开发的人,肯定使用过诸如QList.QVector.QLinkList这样的模板容器类,它们虽然名字长的不同,但使用方法都大致相同, 因为其使用方法都大体相同,很多人可能随便拿一个容器类 ...
Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)
Introduction Qt库提供了一组基于模板的一般化的容器类.这些容器可以存储指定的类型的元素.例如,如果你需要一个可变大小的Qstring数组,可以用QVector
Qt——容器类(译)
注:本文是我对Qt官方文档的翻译,错误之处还请指正. 原文链接:Container Classes 介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变 ...
Qt容器类汇总说明
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt容器类汇总说明 本文地址:http://techieliang.com/2017/ ...
Qt容器类之二:迭代器
一.介绍 遍历一个容器可以使用迭代器(iterators)来完成,迭代器提供了一个统一的方法来访问容器中的项目.Qt的容器类提供了两种类型的迭代器:Java风格迭代器和STL风格迭代器.如果只是想按顺 ...
Qt容器类之一:Qt的容器类介绍
一.介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变的QString的数组,则使用QVector. 这些容器类比STL ...
Qt容器类之三:通用算法
在头文件中,Qt提供了一些全局的模板函数,这些函数是可以使用在容器上的十分常用的算法.我们可以在任何提供了STL风格迭代器的容器类上用这些算法,包括QList.Q ...
Qt容器类的对象模型及应用(线性结构篇)(好多图,比较清楚)
用Qt做过项目开发的人,肯定使用过诸如QList.QVector.QLinkList这样的模板容器类,它们虽然名字长的不同,但使用方法都大致相同, 因为其使用方法都大体相同,很多人可能随便拿一个容器类 ...
随机推荐
玩转 Linux 系统的方法论
Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...
cocoapods导入shareSDK分享实现
这个在官方文档没有说这两个库是必须导入的,但是不导入是会有错误的 pod 'ShareSDK3/ShareSDKConfigurationFile' pod 'ShareSDK3/ShareSDKEx ...
jboss漏洞导致服务器中毒
中毒现象 1. 网络出现拥塞,访问延迟增加. 2. 系统定时任务表中出现异常的定时任务. 3. 出现异常进程. 4. $JBOSS_HOME/bin或/root目录下出现大量的异常文件. 现象 ...
SpinLock 实现
/* Example: SpinLock Description: SpinLock is the lock implementation using AtomicInteger as a primi ...
poj 1269 Intersecting Lines
题目链接:http://poj.org/problem?id=1269 题目大意:给出四个点的坐标x1,y1,x2,y2,x3,y3,x4,y4,前两个形成一条直线,后两个坐标形成一条直线.然后问你是 ...
剪花布条 - HDU 2087(简单KMP | 暴力)
分析:基础的练习............... ============================================================================ ...
c#笔记之启动新线程
可已通过下面方法来启动一个新线程并执行相应的方法 new Thread(new ThreadStart(new Action(() => { ...
常用的CI笔记
1. thinkphp 封装好的$this->success(),就直接实现成功跳转,$this->error(),错误跳转.CI有show_error(),但是却不能直接实现跳转,所以需 ...
TCP TIME WAIT
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime) ...
069、Calico的默认连通性(2019-04-12 周五)
参考https://www.cnblogs.com/CloudMan6/p/7536746.html Calico 跨主机连通性测试 root@host1:~# docker exec bbo ...
遍历qvector_Qt容器类——1. QList类、QLinkedList类和QVector类相关推荐
- 遍历qvector_QT容器类(一) 之 QVector 、QLinkedList 和 QList | 学步园
前言: Qt中提供了一系列的基于模板的容器类,这些类被用来存储指定类型的元素.例如,你需要一个可变长的QString的数组,你可以使用QVector, 相对于STL容器,Qt中这些容器类都是轻量级的, ...
- 遍历qvector_Qt 中的数据结构类(2)QList、QLinkedList、QVector、 QMap、QHash
迭代器 QT支持两种类型的迭代器只读迭代器:const_iterator 读写迭代器:iterator 只读迭代器比读写迭代器操作速度快很多 一.QList 概念:是一个提供列表的模板类//函数: i ...
- QVector、QList、QLinkedList类用法区别
QVector.QList.QLinkedList类用法区别 1. QVector 是提供动态数组的一个模板类. QList 是提供列表的一个模板类. QLinkedList 是提供链表的一个模板类. ...
- 给一个包名,遍历此包下的所有文件,并生成类对象Class[] clazzs;
package net.zjitc;import java.io.File; import java.util.ArrayList; import java.util.List;/*** @autho ...
- 【QT 基础教程 九】QVector类详解
概要:本期主要讲解Qt中QVector容器类的常用接口. 一.简介: 头文件:#include<QVector> 模块: QT += core 功能:主要用于数据存储,可以类比C++中的泛 ...
- Qt的QVector类
Qt的QVector类是一个类似标准C++vector的容器类(container class),它将数据存储在连续的内存空间里,因此在执行prepend.insert操作的时候比QList类慢. 如 ...
- QT的QVector类的使用
详细说明 QVector类是提供动态数组的模板类. QVector 是Qt的通用容器类之一.它将项目存储在相邻的内存位置,并提供基于索引的快速访问. QList ,QLinkedList ,QVect ...
- php引入类的位置,php如何在一个类中引入另外一个类
有时候需要在一个类中调用另外一个类里面的方法,然后另外一个类又需要调用当前类的方法,怎么办呢?下面是具体的介绍.希望对大家有用,更多内容请关注应届毕业生网! 可以直接引入类对象的方式调用另外一个类的方 ...
- 文档类CDocument、子框架类CFrameWnd及视图类CView的关系及如何相互调用
文档类.子框架类及视图类的关系及如何相互调用 收藏 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往 ...
最新文章
- mariadb的explain分析及InnoDB存储引擎
- 在java中 接口修饰符,Java接口中的修饰符
- Java开发代码规范之编程规约---命名风格
- java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken
- 软件测试学习之 ---------- MySQL的查询(重中之重)
- 【Qt教程】1.6 - Qt5信号与槽、Single Slot emit、自定义信号、自定义槽
- GIS 地图制作 学习总结
- 树莓派4B之Windows XP系统安装游戏(二)
- Unity Shader - Secondary Maps (Detail Maps) Detail Mask 第二部分贴图(细节贴图)
- 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
- sed新增首行与尾行
- 2022-2028年中国工业互联网预测性维护(PdM)行业市场调查及未来前景预测报告
- 土气和洋气的方法不用π求圆的面积
- MacPro系统重装操作步骤(U盘重装)
- c++基础题:判断某整数是否既是5又是7的整数倍
- JAVA-win7的JDK环境变量配置安装
- 吴式太极大师修丕勋简介
- 找规律题(面试+练脑子)
- Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储
- 手机号校验正则校验格式