C++的标准模板库(STL)中定义了一系列容器,并对应有若干容器类和操作容器用到的迭代器(这部分内容可参见本人博客《C++学习笔记——STL标准模板库》)。Qt自定义了几个容器类,这些容器类同样是基于模板的,可以实例化为具体的数据类型。相比于STL中的容器,Qt中的容器更加轻巧、安全和便于使用,而且进行了速度和存储优化,另外,它们还是线程安全的,可以作为只读容器被多个线程访问。
与STL类似,Qt的容器类分为顺序容器和关联容器。前者的数据结构是线性表,后者的数据结构是树。顺序容器类有QList,QLinkedList,QVector,QStack,QQueue;关联容器类包括QMap,QMultiMap,QHash,QMultiHash,Qset。同样使用迭代类访问容器中的数据项,Qt提供Java类型的迭代类和STL类型的迭代类。Java类型的迭代易于适用并提供高级功能,而STL类型的迭代效率则会更高一些。