一.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的顺序出队列:
总结:
容器可以理解是一个用来装数据的盒子。
重要的是我们要知道要用什么样的盒子,装什么样的数据。
至于增删改查的用法,知一遍知其二。
所以说应用场景一定要深刻理解。
路漫漫其修远兮,吾将上下而求索。