在开发一个较高性能需求的应用程序时,程序员会比较关注这些容器类的运行效率,表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 &vert; 暴力)

分析:基础的练习............... ============================================================================ ...

c&num;笔记之启动新线程

可已通过下面方法来启动一个新线程并执行相应的方法 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类相关推荐

  1. 遍历qvector_QT容器类(一) 之 QVector 、QLinkedList 和 QList | 学步园

    前言: Qt中提供了一系列的基于模板的容器类,这些类被用来存储指定类型的元素.例如,你需要一个可变长的QString的数组,你可以使用QVector, 相对于STL容器,Qt中这些容器类都是轻量级的, ...

  2. 遍历qvector_Qt 中的数据结构类(2)QList、QLinkedList、QVector、 QMap、QHash

    迭代器 QT支持两种类型的迭代器只读迭代器:const_iterator 读写迭代器:iterator 只读迭代器比读写迭代器操作速度快很多 一.QList 概念:是一个提供列表的模板类//函数: i ...

  3. QVector、QList、QLinkedList类用法区别

    QVector.QList.QLinkedList类用法区别 1. QVector 是提供动态数组的一个模板类. QList 是提供列表的一个模板类. QLinkedList 是提供链表的一个模板类. ...

  4. 给一个包名,遍历此包下的所有文件,并生成类对象Class[] clazzs;

    package net.zjitc;import java.io.File; import java.util.ArrayList; import java.util.List;/*** @autho ...

  5. 【QT 基础教程 九】QVector类详解

    概要:本期主要讲解Qt中QVector容器类的常用接口. 一.简介: 头文件:#include<QVector> 模块: QT += core 功能:主要用于数据存储,可以类比C++中的泛 ...

  6. Qt的QVector类

    Qt的QVector类是一个类似标准C++vector的容器类(container class),它将数据存储在连续的内存空间里,因此在执行prepend.insert操作的时候比QList类慢. 如 ...

  7. QT的QVector类的使用

    详细说明 QVector类是提供动态数组的模板类. QVector 是Qt的通用容器类之一.它将项目存储在相邻的内存位置,并提供基于索引的快速访问. QList ,QLinkedList ,QVect ...

  8. php引入类的位置,php如何在一个类中引入另外一个类

    有时候需要在一个类中调用另外一个类里面的方法,然后另外一个类又需要调用当前类的方法,怎么办呢?下面是具体的介绍.希望对大家有用,更多内容请关注应届毕业生网! 可以直接引入类对象的方式调用另外一个类的方 ...

  9. 文档类CDocument、子框架类CFrameWnd及视图类CView的关系及如何相互调用

    文档类.子框架类及视图类的关系及如何相互调用 收藏 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往 ...

最新文章

  1. mariadb的explain分析及InnoDB存储引擎
  2. 在java中 接口修饰符,Java接口中的修饰符
  3. Java开发代码规范之编程规约---命名风格
  4. java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken
  5. 软件测试学习之 ---------- MySQL的查询(重中之重)
  6. 【Qt教程】1.6 - Qt5信号与槽、Single Slot emit、自定义信号、自定义槽
  7. GIS 地图制作 学习总结
  8. 树莓派4B之Windows XP系统安装游戏(二)
  9. Unity Shader - Secondary Maps (Detail Maps) Detail Mask 第二部分贴图(细节贴图)
  10. 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
  11. sed新增首行与尾行
  12. 2022-2028年中国工业互联网预测性维护(PdM)行业市场调查及未来前景预测报告
  13. 土气和洋气的方法不用π求圆的面积
  14. MacPro系统重装操作步骤(U盘重装)
  15. c++基础题:判断某整数是否既是5又是7的整数倍
  16. JAVA-win7的JDK环境变量配置安装
  17. 吴式太极大师修丕勋简介
  18. 找规律题(面试+练脑子)
  19. Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储
  20. 手机号校验正则校验格式

热门文章

  1. CentOS使用DVD光盘作为yum软件源
  2. 我的世界服务器修改完配置怎么使用方法,我的世界服务器地址设置教程
  3. 5分钟完成网吧服务器系统所有安装,够快了吧!
  4. 文件列表中查找同一批次号中批次号最小的文件名称
  5. 如何快速随机打散一个数字数组?
  6. python 汉字识别训练数据生成_中文识别数据集生成脚本
  7. 仿QQ尾巴,让程序给记事本输入文字!:)
  8. 转岗去微信事业群的一些反思
  9. Smart Toast and Snackbar:简化调用,并提高性能和用户体验!
  10. Xray捡洞中的高频漏洞