Qt学习-QMap、QString

1、容器的概念

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

连续容器:QVector,QLinkedList,QList

关联容器:QMap,QHash

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

QMap  QHash

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

  • QMap
QMap 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 keylist = map.keys();

3、连续容器:QVector,QList

  • QVector

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

(1)指定大小

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

(2)不指定大小

QVector 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 vect;
vect.fill("hello",3);
if(vect.at(1)=="hello")
{
    qDebug<<"Yes";
}
vect.insert(2,"world);
  • QLinkedList

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

  • QList

兼容QLinkedList和QVector的优点,是一个“数组列表”。它既可以通过下标快速访问,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位编码的文本,

你可能感兴趣的:(qt,学习,开发语言)