Qt学习-QMap、QString

文章介绍了Qt框架中三种主要的容器类型:关联容器QMap和QHash,以及连续容器QVector和QLinkedList。QMap以键值对方式存储数据,支持通过键来读取,而QVector类似于动态数组,支持快速访问和灵活的大小调整。QLinkedList是链表实现,适合中间插入,QList结合了两者的优点。此外,还提到了QString和QByteArray在存储文本和二进制数据时的作用。
摘要由CSDN通过智能技术生成

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位编码的文本,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值