Qt、C++的容器类,附带QVariant、QString的一点备忘

这篇博客主要介绍了Qt中的容器类,包括QVector、QList和QMap,对比了它们与C++ STL中的向量、列表和映射的异同。此外,还讲解了QString的使用以及QVariant的灵活性,如何用其存储不同类型的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前对于容器类,没有一个很系统的了解。后来才专门看了 《C++ GUI Qt 编程》的这一部分内容,做一下笔记。需要先说的是,这里对 C++自身的 STL 容器类只是附带提下,不是很深刻。

容器类,就是一些对象,可以承载其他类对象,并且具有成熟的对自己这些元素的操作函数的类。这个可能和数组之类的有点像,但是在设计概念上,应该是远远高于数组之类的。我觉得容器类是提供了完整而封装得极好的数据结构,来实现强大的,完美的可操作性。
另外,需要说明的是,容器类(C++及Qt)都有一些相关的操作符,这一块还不是特别了解,等到以后进一步了解操作符,再补充。

对于容器类的表示方式如:
Vector<项类名> Vecotor对象名 一类的。

向量(Vector):
向量是把它的项存储在内存中相近的位置的一种数据结构。在向量末尾添加额外的元素是非常快速的,但是在其前面或者中间插入元素是耗时的。向量可以一开始就设置长度,也可以不设置(通常也不设置吧)。STL有提供 [] 操作符给 Vector。Qt的等价类也提供了一些操作符,具体去帮助文档看(包括函数之类)。
组装向量的一个方式就是使用 push_back 方法,即是尾插了。
Qt中,等价的类,是 QVector 类。

列表(List):
列表,或者链表,是把它的 item 储存在内存中非相近的地方的数据结构。不像向量一样, list 的随机访问效果慢(这是取决于它的存储方式),但是 insert(),erase()非常迅速。STL支持使用push_back()和insert()添加新的项 。和 Vector 不同,它可以在中间和开头插入。但因为访问的效果差,所以很多情况时使用向量。
STL没有提供 [] 操作符给 List。所以只能使用迭代器来遍历列表的元素(Qt的等价类支持 [] 操作符,但是也挺花时间的)。
Qt中的等价类是,QList。

映射(Map):
Map,作为映射,保存的是同一个类型的任意多个性。Map 使用 键值对 这样的形式。映射具有很方便的随机访问和插入性能。如果一个新的值被赋值到一个已经存在的键上,旧的值就会被覆盖。
STL 的map 形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值