`
qimo601
  • 浏览: 3438123 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

QList和QVector等容器的区别

    博客分类:
  • Qt
阅读更多

 

QList和QVector等容器的区别。

1、大多数情况下可以用QList。像prepend()和insert()这种操作,通常QList比QVector快的多。这是因为QList是基于index标签存储它的元素项在内存中,比那种依赖iterator迭代的更快捷。而且你的代码也更少。

2、如果你需要一个真正的连接着的list,且需要保证一个固定插入耗时。那就用迭代器,而不是标签。使用QLinkedList();

3、如果你需要开辟连续的内存空间存储,或者你的元素远比一个指针大,这时你需要避免个别插入操作,出现堆栈溢出,这时候用QVector

4、如果你需要一个低层的可变数量大小的数组,用QVarLengthArray就够了。他可以预先在栈中分配已知长度大小的数组,如果超过这个长度,会在堆中继续存储。默认大小256

QVarLengthArray<int, 1024> array(n + 1);

 

 

  • For most purposes, QList is the right class to use. Operations like prepend() and insert() are usually faster than with QVector because of the way QList stores its items in memory (see Algorithmic Complexity for details), and its index-based API is more convenient than QLinkedList's iterator-based API. It also expands to less code in your executable.
  • If you need a real linked list, with guarantees of constant time insertions in the middle of the list and iterators to items rather than indexes, use QLinkedList.
  • If you want the items to occupy adjacent memory positions, or if your items are larger than a pointer and you want to avoid the overhead of allocating them on the heap individually at insertion time, then use QVector.
  • If you want a low-level variable-size array, QVarLengthArray may be sufficient.

 

分享到:
评论

相关推荐

    双重qlist用法

    在Qt库中,QList是一种常用的容器类,用于存储相同类型的数据对象。它提供了动态数组的功能,支持元素的增删改查以及迭代等操作。在某些复杂的数据结构中,我们可能需要嵌套使用QList,比如创建一个QList来保存另一...

    QT,QVector 基本用法,遍历[实例讲解] - 小皮球的博客 - CSDN博客1

    QVector是Qt框架中一个非常重要的容器类,它提供了一种高效的方式来存储和操作动态数组。QVector适用于那些需要频繁插入、删除和访问元素的场合,尤其是在性能敏感的代码中。下面我们将深入探讨QVector的基本用法、...

    Qt的容器类

    连续容器类包括 QVector、QList,链表类包括 QLinkedList。 QVector&lt;T&gt; 是一种与数组相似的数据结构,可以把项存储在内存中相邻的位置。它可以使用 append() 函数在末端增加项,也可以使用 insert() 函数在中间插入...

    Qt_chapter5.zip

    这些容器包括QList、QVector、QStringList、QHash、QMap等。QList和QVector是基于动态数组的容器,适用于快速的随机访问和插入删除操作;QStringList则专门用于字符串操作;而QHash和QMap则是基于哈希表和红黑树的...

    重复填充QVector items

    在C++编程中,`QVector`是Qt库提供的一种动态数组容器,它类似于标准模板库(STL)中的`std::vector`。本话题主要关注如何在已有的`QVector`中进行重复填充操作,即对每个元素再追加10个相同的副本。这个过程在软件...

    QListPopBackTest.zip

    STL(Standard Template Library,标准模板库)中的`std::vector`和Qt库中的`QList`及`QVector`都是常用的动态数组容器,它们提供了方便的数据操作接口。本文将深入探讨这些容器的特点,以及在从容器中弹出元素,...

    qt6官方全部的例子源代码

    在Qt中,例如QList、QVector等容器类就是用来聚合其他对象的。 2. **gui**: GUI(图形用户界面)是Qt的主要功能之一。这个目录下会有许多关于窗口、控件、布局管理、绘图、事件处理等的示例。例如,QMainWindow...

    QT制作文件合成工具和源码

    在文件合成工具的实现中,开发者可能会使用到QList、QVector等容器类来存储待合并文件的信息。通过遍历这些容器,逐个读取文件内容并写入到新的合成文件中。为了确保数据的完整性和一致性,可能还需要使用到文件的...

    我的qq局域聊天软件

    在Qt中,可以使用QList、QVector等容器类来存储和管理用户信息,同时利用信号和槽机制实现添加、删除好友的操作,并同步更新用户的好友列表。 音乐播放器功能通常需要集成音频播放库,如Qt自带的 Phonon 模块或者第...

    QT入门教程,源代码

    QT支持多种数据类型,例如QString用于处理文本字符串,QByteArray用于处理字节序列,QList、QVector等容器类用于存储和操作数据集合。此外,还有QFile和QTextStream用于文件操作,QNetworkAccessManager和...

    音乐播放器

    4. **播放列表管理**:播放列表是音乐播放器的重要组成部分,它可能采用了QList或QVector等容器来存储歌曲信息,并提供了增删查改等操作。 5. **皮肤和字体设置**:皮肤系统通常涉及资源管理和界面样式更改,Qt5的...

    QT音乐播放器制作,基于C++

    这可能是一个数据库,或者使用QList、QVector等数据容器来存储文件路径。同时,这个“我喜欢的歌单”也需要支持上述的所有操作,比如播放、暂停、切换等。 最后,为了构建用户界面,QT提供了丰富的GUI组件,如...

    QLabel的使用.pdf

    QList基于链表的数据结构,这使得它在某些场景下比其他的容器如QLinkedList和QVector更有优势。QList的主要优点在于它的API是基于索引的,这使得通过索引访问元素变得更加直观和方便。与QLinkedList的迭代器基础API...

    Qt音乐播放器

    这通常可以使用QList或QVector等Qt容器类来实现。同时,播放列表的界面展示和更新也需要与后台的数据模型进行同步,这就需要用到Qt的模型/视图/控制器(MVC)设计模式。 在实际开发过程中,开发者还需要考虑多线程...

    Qt中的C++技术

    模板使得Qt可以提供泛型编程,如容器类QList、QVector等,这些容器可以容纳任何类型的对象,包括自定义类型。元对象系统则允许运行时动态地查询和操作类的信息,如属性、信号和槽。这为反射和脚本化编程提供了可能,...

    C++ GUI Programming with Qt 4

    9. **容器类**:涵盖了Qt的各种容器类,如QList、QVector等,便于管理和操作数据集合。 10. **接口技术**:教授如何与原生API进行交互,实现Qt与其他系统的无缝连接。 此外,书中还包含了一些其他高级技巧,比如...

    QT API中文官方参考文档 .chm文件

    如QList、QVector、QString等都是在这个模块中定义的。 2. **Gui**:该模块提供了构建GUI应用程序所需的所有元素,如窗口、按钮、文本编辑器等。QWidget是所有GUI对象的基类,而QApplication和QMainWindow则是启动...

Global site tag (gtag.js) - Google Analytics