IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Qt扫盲-QList使用总结 -> 正文阅读

[数据结构与算法]Qt扫盲-QList使用总结

概述

QList是Qt的泛型容器类之一。它将项目存储在一个列表中,该列表提供基于索引的快速访问以及基于索引的插入和删除。
QList、QLinkedList 和 QVector 提供了类似的 API 和功能。它们通常是可互换的,但性能有所区别。

  • QVector 应该是默认首选的容器
  • QList是最广泛用于Qt API中传递值的容器
  • QList不是指针结构体类型的链表,真正的结构体指针链表是 QLinkedList

一、QList 声明及初始化

QList可以保存基本数据类型的,如int,double,bool等;但是在存储QObject对象及其子类对象时,不能直接存对象本身,而是只能存对象的地址;

1. 声明 QList

声明简单:

//基本数据类型
QList<int> integerList;
QList<QDate> dateList;

//存储QObject对象的地址
QList <QWidget *> ptr_widgets;
QList <QObject *> ptr_objects;

2. 初始化 QList

初始化也很简单;若没初始化,链表默认为空的。

QList<QString> list = { "one", "two", "three" };

QWidget * widget1 = new QWidget();
QWidget * widget2 = new QWidget();
QList<QWidget *> ptr_widgets = {widget1, widget2};

二、QList 基本的 增加、删除、移动、修改

QList 在有些实现都是需要多个基本操作组合来实现的,不同的实现用的方法也不一致,Qt提供的都是最核心、最单一的功能。

1. 增加节点

  • insert():插入节点到
  • append():尾部添加节点
  • prepend() :头部添加节点
  • operator <<():尾部添加节点或链表
  • operator+=():尾部添加节点

2. 删除节点

  • removeAt():删除节点
  • removeFirst():删除头节点
  • removeLast():删除尾节点

3. 移动节点

  • move():链表内移动节点位置
  • swap():俩个链表交换值(其实交换一下地址映射就能实现)

4. 修改节点值

  • replace():替换链表内的节点值

三、QList 定位节点

QList是有序的链表,可以通过索引来得到

  • operator [ ] 数组索引符:这个和普通数组一样的使用 [ ] 访问下标方法一致
  • at() 函数:也是通过索引值,也即是下标方式

Qt 推荐使用at()函数,这样的效率更好,因为 at()函数不会发生 深拷贝 ,而另外一种方式会。

QList还提供了一些快捷的 索引 + 返回索引节点 + 删除原索引节点,也就是组合的功能;但是这个是 take…不是get…这样的,这就意味着,这个其实是?剪掉一个节点,并返回

  • takeAt():取得在指定位置的节点
  • takeFirst():取得头节点 ;等价【takeAt(0)】
  • takeLast():取得尾节点

四、QList 的基本信息

  • contains():是否包含节点xxx
  • count():对指定节点值计数
  • isEmpty():链表为空?
  • size():链表大小?
  • indexOf():节点位置?

等等。。。常用功能

但是有些功能就需要组合一下就行
其他功能还需要看帮助文档

五、QList 迭代器功能

有两种迭代器的风格

  • Java style
  • STL style

区别确实有,但是不大;
官方说的性能来看:STL风格的更强大;毕竟能融入算法模块;
但Java的风格更加人性化,更容易使用些,性能也不差,平常代码完全能胜任了。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:47:47  更:2022-03-12 17:49:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:36:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码