4.1 容器类


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

4.1 容器类

QT不仅支持C++的STL模板库,同时自己也定义了一套容器类和与之操作的算法类,使用QT定义的这一套库,可以使在各个平台的表现相同。QT的这些容器被设计为更轻便,更安全和更容易使用。


容器类是隐式共享(implicitly)的,可重入(reentrant)的和线程安全的。并且在速度上进行了优化,内存占用少,内联代码扩展少,从而可以产生更小的可执行文件。


为容器遍历提供了两种迭代器(Java-style,STL-style),并且QT提供了foreach关键字,更加方便元素遍历。

其中,Java风格的迭代器更容易使用,特别是对于Java工作人员来说,它提供了高层次的函数;

然而,STL风格的迭代器会更高效,并且可以和Qt和STL的通用算法结合使用。


Qt中的容器和STL中的类似,也分为序列式容器关联式容器


序列式容器有:QList,QLinkedList,QVector,QStack,QQueue。对大部分应用程序来说,QList都是一个很好的选择。尽管它在底层被实现为一个array-list,但它为我们提供了非常快速的添加操作,包括在头部添加和在尾部添加。如果你确实需要一个linked-list,可以使用QLinkedList;如果你想确保你的元素占用连续的内存空间,可以使用QVector。而QStack和QQueue是两个提供了LIFO和FIFO语义的方便类。


除了序列式容器,Qt中还提供了关联式容器QMap,QMultiMap,QHash,QMultiHash,QSet。这些容器中存储的都是key-value对。其中,"Multi"容器又支持一个key可以关联多个value。"Hash"容器通过使用一个hash函数而不是二分搜索提供了更快速的查找操作。


好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***