Qt入门教程【STL篇】STL分析

100 篇文章 879 订阅 ¥49.90 ¥99.00
本文探讨了Qt库中的QMap、QList、QBitArray、QSet与STL相应容器的异同,包括它们的数据结构、性能和适用场景。虽然两者在功能上相似,但在实现方式和效率上存在差异,例如QSet基于QHash,通常效率较高但可能有碰撞问题,而QList优化过的array list设计,对于基础类型直接存储。Qt对象在STL中使用安全,两者的性能差异主要在于Qt不支持allocator和缺乏shrink接口。
摘要由CSDN通过智能技术生成

Qt STL

QMap —— std::map 两者都是[红黑树算法],但不能互转,因为数据成员实现方式不同。std::map的数据成员用的是std::pair,而QMap用的是自己封装的Node,当然还是[键值]对

QList —— stl没有对应类。QList其实不是链表,是优化过的vector,官方的形容是array list,据说它更类似于boost::ptr_deque,不过我没用过后者。它的存储方式是分配连续的node,每个node的数据成员不大于一个指针大小,所以对于int、char等基础类型,它是直接存储,对于Class、Struct等类型,它是存储对象指针。

QBitArray —— std::bitset 功能相同,实现相似,都是构造一个array,用位操作来存取数据。不同的是,QBitArray数据的基础元素是[unsigned char],而bitset是unsigned long。所以QBitArray可能在空间消耗上会省一点。至于效率上么……得让懂编译的人来解答了,我是觉得,32位cpu上,char的位操作和int的位操作应该是一样的开销。
QSet —— s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小鱼酱

用心写好每一篇博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值