Qt学习-QMap、QString

news/2024/11/7 5:26:40/

1、容器的概念

用于存储给定的数据类型的值,它是模板类,更具提供T的不同存储不同数据。

连续容器:QVector<T>,QLinkedList<T>,QList<T>

关联容器:QMap<K,T>,QHash<K,T>

2、Qt提供两个关联容器类:

QMap<key,value>  QHash<key,value>

关联容器可以存储任意多个相同类型的数据,并且有一个键值索引,通过键值来读取数据。它以升序键的方式来存储数据。

  • QMap
QMap<int,string> map;
//插入数据
map.insert(1,"ZhangSan");
map.insert(2,"LiSi");
map[3]="WangWu";//map[key]="value";//读数据
string temp;
temp = map.value(1);//temp = map.value(key)
temp = map[1];      //temp = map[key]
//返回所以key的列表
QList<T> keylist = map.keys();

3、连续容器:QVector<T>,QList<T>

  • QVector

Qt的QObject类及其子类不能存放在容器中,QVector<T>和C++的数组几乎差不多,区别在于QVector<T>的大小可以重新定义。

(1)指定大小

QVector<int> vect(3);
vect[0] = 1;//通过下标赋值

(2)不指定大小

QVector<int> vect;
vect.append(1);//append方法在末端赋值
vect<<1<<2<<3;//使用<<操作符代替append

 (3)初始化

普通的数据或指针初始化为0,"类"会调用默认构造函数初始化。

(4)fill函数

vect.fill(1,10);//容器填充全部1,大小为10

vect.fill(2);//容器全部填充为2,容器大小不改变

(5)at()只读查看

vect.at(2);//查看容器第三项

(6)data() //返回容器中第一项的指针

(7)indexOf(T,int from=0)  //查看从指定位置开始的某一项T的位置 

(8)contains(T) 查看是否包含某一项

(9)count(T)查看某一项被包含多少次

(10)count()查看容器大小==size()

(11)resuze(num)重置容器大小

(12)修改数据

insert(int i,T);//在指定位置i插入数据

replace(int i,T);//在指定位置i替换数据

prepend(T);//头部增加

append(T);//尾部增加

QVector<QString> vect;
vect.fill("hello",3);
if(vect.at(1)=="hello")
{qDebug<<"Yes";
}
vect.insert(2,"world);
  • QLinkedList

QLinkedList<T>以链表的形势存储数据,是非连续的。在它中间插入数据比QVector容易很多,但是它不能用下标去访问数据,只能用迭代器。

  • QList

兼容QLinkedList<T>和QVector<T>的优点,是一个“数组列表”。它既可以通过下标快速访问,QList在数组不大情况下,也很容易在中间插入数据。

QList维护的是一个数组指针,不是一个数组。

3、熟悉一些类型

  • QString
QString str = "hello";
str += " world";
//追加
str.appeng("\n");
//移除两端的空白
trimed(str);//移除两端的空白
//组合字符串
str.sprintf("%s%s%s","hello","world"."\n");//格式化的输出打印到字符串中
str=QString(%1%3%2).arg("I").arg("you"),arg("love");//占位符QByteArray 主要存储原始的二进制数或者8位编码的文本,

http://www.ppmy.cn/news/74472.html

相关文章

(转载)MATLAB智能算法30个案例分析(2)——基于遗传算法和非线性规划的函数寻优算法

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1 理论基础 1.1 非线性规划 非线性规划是20世纪50年代形成的一门新兴学科。1951年库恩和塔克发表的关于最优性条件(后来称为库恩塔克条件)的论文是非线性规划诞生的标志。非线性规划研究…

Mybatis是什么?Mybatis中动态sql常用标签有哪些?

Mybatis是什么&#xff1f; Mybatis是一种开源的Java持久层框架&#xff0c;它可以将SQL语句和Java代码进行分离&#xff0c;使得开发人员可以更加专注于业务逻辑的实现。与Hibernate等ORM框架不同的是&#xff0c;Mybatis使用XML或注解的方式来描述SQL语句&#xff0c;这种方式…

服务(第二十六篇)redis的主从复制、哨兵、集群

主从复制&#xff1a; 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 原理&#xff1a; 主从关系确定…

【Linux之进程间通信】01.fork函数

【Linux之进程间通信】 项目代码获取&#xff1a;https://gitee.com/chenshao777/linux-processes.git &#xff08;麻烦点个免费的Star哦&#xff0c;您的Star就是我的写作动力&#xff01;&#xff09; 01.fork函数 pid_t fork(void);fork()函数的作用&#xff1a;产生一个…

OpenHarmony支持HDMI接口声卡适配说明

高清多媒体接口&#xff08;High Definition Multimedia Interface&#xff0c;HDMI &#xff09;是一种全数字化视频和声音发送接口&#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设…

StringBuffer与StringBuilder的区别

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;StringBuffer与StringBuilder的区别 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你…

【机器学习-K近邻算法】绝对通俗易懂的机器学习算法之一

1.k近邻算法 1.1 k近邻算法简介   1.定义&#xff1a;     就是通过你的“邻居”来判断你属于哪个类别。   2.如何计算你到你的“邻居”的距离&#xff1f;     一般时候&#xff0c;都是使用欧氏距离。 1.2 k近邻算法的api初步使用   1.sklearn     优势&a…

xxl-sso 单点登录

目录 1 项目启动修改Host文件运行路径SSO登录/注销流程验证 2 分析登录流程① 首次访问 client1 的 http://xxlssoclient1.com:8081/xxl-sso-web-sample-springboot/ &#xff0c;进入过滤器② 请求重定向至 server的 http://xxlssoserver.com:8080/xxl-sso-server/login?redi…