【qt】容器的用法

容器目录

  • 一.QVertor
    • 1.应用场景
    • 2.增加数据
    • 3.删除数据
    • 4.修改数据
    • 5.查询数据
    • 6.是否包含
    • 7.数据个数
    • 8.交换数据
    • 9.移动数据
    • 10.嵌套使用
  • 二.QList
    • 1.应用场景
    • 2.QStringList
  • 三.QLinkedList
    • 1.应用场景
    • 2.特殊点
    • 3.用迭代器来变量
  • 四.QStack
    • 1.应用场景
    • 2.基本用法
  • 五.QQueue
    • 1.应用场景
    • 2.基本用法
  • 总结:

一.QVertor

1.应用场景

QVertor的底层实现是数组,所以说它的查询速度贼快
但是插入和删除就非常慢,需要移动大量的数据

因此你需要查询快,同时不怎么插入和删除,那么QVertor你值得拥有

2.增加数据

尾部添加:1.<< 2.append 3.push_back
头部添加: push_front
任意位置添加:insert(位置,数据)

在这里插入图片描述
运行结果:
在这里插入图片描述

3.删除数据

remove(下标号)
removeOne(数据值)
takeAt(下标号)

在这里插入图片描述
运行结果:
在这里插入图片描述

4.修改数据

因为底层是数组,可以通过下标访问进行修改
可以通过replace(下标号,值)修改

在这里插入图片描述
运行结果:
在这里插入图片描述

5.查询数据

可以通过下标直接查询
还可以通过indexOf(数据)获取数据的下标值

在这里插入图片描述
运行结果:
在这里插入图片描述

6.是否包含

contains(数据)

在这里插入图片描述
运行结果:
在这里插入图片描述

7.数据个数

count(数据),括号里面的数据在容器中有几个
count(),该容器总的个数

在这里插入图片描述
运行结果:
在这里插入图片描述

8.交换数据

swapItemsAt(下标号,下标号)

在这里插入图片描述
运行结果:
在这里插入图片描述

9.移动数据

move(下标号,下标号)

在这里插入图片描述
运行结果:
在这里插入图片描述

10.嵌套使用

容器里面再使用一个容器,相当于二维数组

在这里插入图片描述
运行结果:
在这里插入图片描述

二.QList

1.应用场景

QList的底层原理是指针数组,本质上也是一个数组,只不过里面放在指针,指针指向真正的数据。
查询和QVector差不多,但是插入和删除要快一些

所以没做特殊要求时,一般用QList

有了QVector的前车之见,现在就简单了,增删改查的接口基本一样,记住一套用法就足够了。
如果还想知道更多可以在Qt里鼠标放在容器上,按F1进入在线文档查看。

2.QStringList

上节课咱们的字符串分隔符split就是返回的QStringList容器来装分割后的字符串。
QStringList是QList< QString >的子类,其实差不多,只是为了方便。

三.QLinkedList

1.应用场景

QLinkedList的底层实现是双向链表,这样插入和删除的速度就非常快,但是查询慢。

因此需要大量查询的时候,可以用QLinkedList

2.特殊点

  • 因为底层不是数组,所以不能使用下标符进行访问了。
  • 所以说对一些需要下标号位置的接口就不能使用了
    如:remove()不能通过下标的方式,takeAt()等等
  • insert插入只能使用迭代器进行插入

在这里插入图片描述
运行结果:
在这里插入图片描述

3.用迭代器来变量

在这里插入图片描述
运行结果:
在这里插入图片描述
c++里面迭代器你们应该都知道吧。我就不讲了,以后我可能会出c++的教程,但是可能有点久哦,俏皮笑。

四.QStack

1.应用场景

底层实现是栈,是一种特殊的顺序表,先进后出,类似于这样
在这里插入图片描述

2.基本用法

进栈是1,2,3进的
在这里插入图片描述
出是3,2,1出的:
在这里插入图片描述

五.QQueue

1.应用场景

底层的实现机制是队列,这个在现实生活中就非常常见了,就类似于我们生活中的排队。

先来后到,先进先出

2.基本用法

1,2,3的顺序排序进队
在这里插入图片描述
1,2,3的顺序出队列:
在这里插入图片描述

总结:

容器可以理解是一个用来装数据的盒子。
重要的是我们要知道要用什么样的盒子,装什么样的数据。
至于增删改查的用法,知一遍知其二。
所以说应用场景一定要深刻理解。

路漫漫其修远兮,吾将上下而求索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端每日一题】day2

用JS写一个快速排序算法 function quickSort(arr) {if (arr.length < 1) {return arr;}const pivot arr[Math.floor(arr.length / 2)];const left [];const right [];for (let i 0; i < arr.length; i) {if (i Math.floor(arr.length / 2)) {continue; // Skip piv…

OS复习笔记ch5-3

引言 上一节我们学习了关于信号量机制的一些内容&#xff0c;包括信号量的含义&#xff0c;对应的PV操作等。 如图所示&#xff0c;上一节主要是针对信号量的互斥&#xff0c;其实信号量机制还可以做很多事情&#xff0c;比如实现进程同步和前驱关系&#xff0c;这一节我们先复…

【Spring】JdbcTemplate

JdbcTemplate 是 Spring 提供的一个 JDBC 模板类&#xff0c;是对 JDBC 的封装&#xff0c;简化 JDBC 代码 也可以让 Spring 集成其它的 ORM 框架&#xff0c;例如&#xff1a;MyBatis、Hibernate 等 使用 JdbcTemplate 完成增删改查 一、环境准备 数据库&#xff1a; 准备…

Marin说PCB之如何快速打印输出整板的丝印位号图?

当小编我辛辛苦苦加班加点的把手上的板子做到投板评审状态的时候&#xff0c;坐在我旁边的日本同事龟田小郎君说让我把板子上的丝印也要调一下&#xff0c;我当时就急了&#xff0c;这么大的板子&#xff0c;将近1W多PIN 了都&#xff0c;光调丝印都要老半天啊&#xff0c;而且…

Python基础学习之datetime模块

在Python编程中&#xff0c;处理日期和时间是一个常见的需求。Python的datetime模块提供了丰富的类和方法&#xff0c;用于表示和操作日期、时间、时间间隔等。本文将详细介绍Python的datetime模块&#xff0c;并给出一些实用的示例。 1. datetime模块概览 datetime模块是Pyt…

Docx文件误删除如何恢复?别再花冤枉钱了,4个高效恢复软件!

不管是工作还是学习&#xff0c;总是会与各种各样的文件打交道。文件量越多就越容易出现文件丢失、文件误删的情况。遇到这些情况&#xff0c;失去的文件还能找回来吗&#xff1f;只要掌握了一些数据恢复方法&#xff0c;是很有机会恢复回来的&#xff0c;下面我会将这些方法分…

[机器学习系列]深入探索回归决策树:从参数选择到模型可视化

目录 一、回归决策树的参数 二、准备数据 三、构建回归决策树 (一)拟合模型 (二)预测数据 (三)查看特征重要性 (四)查看模型拟合效果 (五) 可视化回归决策树真实值和预测值 (六)可视化决策树并保存 部分结果如下&#xff1a; 一、回归决策树的参数 DecisionTreeRegress…

zookeeper之分布式环境搭建

ZooKeeper的分布式环境搭建是一个涉及多个步骤的过程&#xff0c;主要包括准备工作、安装ZooKeeper、配置集群、启动服务以及验证集群状态。以下是搭建ZooKeeper分布式环境的基本步骤&#xff1a; 1. 准备工作 确保所有节点的系统时间同步。确保所有节点之间网络互通&#xf…

Redis-5 分布式锁

一.为什么要使用分布式锁&#xff1f; 传统的互斥锁synchronized只能作用于同一台虚拟机上的线程&#xff0c;在使用服务器集群部署的情况下&#xff0c;互斥锁就会失效&#xff0c;因此要采用分布式锁来处理不同服务器上的线程访问同一资源的情况。 二.redis的分布式锁是如何…

NVIDIA_SMI has failed because it couldn’t communicate with the NVIDIA driver

参考&#xff1a;https://www.zhihu.com/question/474222642/answer/3127013936 https://blog.csdn.net/ZhouDevin/article/details/128265656 nvidia-smi查看报错&#xff0c;nvcc正常 1&#xff09;查看nvidia版本 ls /usr/src | grep nvidia nvidia-550.78 2&#xff09;…

暗区突围国际服pc端怎么获取测试资格 twitch掉落资格获取教程

《暗区突围》是由腾讯魔方工作室群开发的第一人称射击类手游。游戏以从暗区撤离并收集物资满载而归作为最终目的&#xff0c;带出的战利品可以存储在仓库中&#xff0c;又可以出售用以换取游戏金钱。游戏中玩家可以创建男性或女性角色&#xff0c;可以通过选择脸型、发型、发色…

冒泡法排序方法与找到出现最多的字符及出现次数

一. 简介 本文学习一下&#xff0c;字符大小排序&#xff0c;获取最大值与最小值。 输出字符串中出现最多的字符&#xff0c;以及出现次数。 二. 冒泡法排序方法与获取最大最小值 1. 冒泡法排序 终端随机输入一个字符串&#xff0c;只包括字符0-9&#xff0c;字符串长度…

2024-05-08 postgres-查询树Query-分析

摘要: pg的词法分析和语法分析使用的技术与mysql相同&#xff0c;此法分析使用bison&#xff0c;语法分析使用了flex。之后ANSI SQL句子被转换为查询树。 Query 结构体保存了文本类型的 SQL,经过语法分析后的分析结果&#xff0c;Query 结构体的成员与 SOL语句的各个子句基本…

AI中LangChain实现RAG中的pdf原理以及快速上手

AI中LangChain实现RAG中的pdf原理以及快速上手 什么是LangChain LangChain是一种基于自然语言处理技术的语言生成模型&#xff0c;它可以将输入的文本转换为自然语言的输出。LangChain的实现原理是基于RAG&#xff08;Retriever-Reader-Generator&#xff09;模型&#xff0c…

C++ 动态内存管理

例如&#xff1a;动态内存和释放单个数据的存储区 一 用new运算符初始化单个数据的存储区 举例

Qt:实现git中diff的功能

在 Git 中&#xff0c;有四种 diff 算法&#xff0c;即 Myers、Minimal、Patience 和 Histogram&#xff0c;用于获取位于两个不同 commit 中的两个相同文件的差异。 Myers算法实现参考&#xff1a; Myers‘Diff之贪婪算法_myers算法-CSDN博客 Git Diff 算法详解&#xff1a…

深度学习算法集成部署

文章目录 0 Docker容器部署1 制作dockerfile2 新建镜像3 新建容器4 运行脚本5 异常处理0 Docker容器部署 使用 Docker 容器部署深度学习模型有以下几个主要优势: 环境一致性:Docker 容器可以将应用程序及其所需的依赖项打包在一起,确保应用程序在不同环境中的运行一致性。这对…

为什么在二三十岁时应该努力变强大?

一、对于即将三十岁或三十岁的人的建议&#xff0c;包括举重、跑步、学习等健身技能&#xff0c;以及在生活中如何处理困难和挑战。 举重是二三十岁的人的最佳做法之一 学习如何在身体上、感情上和精神上挑战极限 在城市里寻找机会&#xff0c;接受邀请&#xff0c;强迫自己出去…

C++之Eigen库基本使用

目录 1、矩阵的构造和初始化操作 2、矩阵的算术运算 3、矩阵的分解和求解 4、矩阵的变换 5、矩阵的访问和修改 6、矩阵遍历 7、线性方程组求解 8、其他操作 Eigen库是一个高级的C库&#xff0c;用于线性代数&#xff0c;矩阵和向量运算&#xff0c;数值分析和相关的数学…

【智能算法】人工原生动物优化算法(APO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.获取代码 1.背景 2024年&#xff0c;X Wang受到自然界原生动物启发&#xff0c;提出了人工原生动物优化算法&#xff08; Artificial Protozoa Optimizer, APO&#xff09;。 2.算法原理 2.1算法思想 AP…