第9章 数据容器
数据容器(Container Classes)就是数据结构课程里常见的列表、链表、队列、栈、
向量等保存和处理数据的类。Qt 所有的数据容器都是模板类,这样方便处理任何类型的数据,当然这些类构造时要带数值类型。
Qt 提供了两大类数据容器,第一类是顺序容器,
包括列表 QList、队列 QQueue、链表 QLinkedList、向量 QVector 和栈 QStack 。
顺序容器比较常见,我们根据应用场景举例使用这些顺序容器。
第二类是关联容器,用于保存键值(key-value)映射,关联容器包括
单映射 QMap、多映射 QMultiMap、单哈希映射QHash、多哈希映射 QMultiHash
和集合 QSet。单映射就是一个 key 对应一个 value,多映射是一个 key 对应多个 value。集合类只有 value 值,没有 key。
Qt 不仅提供了数据容器,还为数据容器提供了方便访问的迭代器,有 Java 风格迭代器类 和 STL 风格的迭代器,功能都是差不多,使用习惯不同而已。
本章 9.1 节介绍三种顺序容器,列表 QList、队列 QQueue 和链表 QLinkedList。
9.2 节介绍剩下的两种顺序容器,向量 QVector、栈 QStack ,并归纳一下顺序容器操作的算法复杂度。
9.3 节介绍两种基于红黑树的关联容器,单映射 QMap 和多映射 QMultiMap 。
9.4 节介绍三种基于哈希表的关联容器,单哈希映射 QHash、多哈希映射 QMultiHash 和集合 QSet,
集合 QSet 就是数学上的集合,比如求交集∩、求并集∪等。该节最后归纳一下关联容器操作的算法复杂度。
9.5 节列举数据容器对应的迭代器,Java 风格迭代器是单独的类,STL 风格的迭代器是数据容器类自己内嵌的,各个迭代器的用法很相似,到时候挑几个编写示例。