2.2 Qt容器类 -- 2017.12.10
发布于:2017-12-10 10:24
Qt提供了一组通用的基于模板的容器类,对比C++的标准模板库中的容器类,Qt的这些容器更轻量、更安全并且更容易使用。此外,
Qt的容器类在速度、内存消耗和内联(inline)代码等方面进行了优化(较少的内联代码将会减少可执行程序的大小)
存储在Qt容器中的数据必须是可赋值的数据类型,也就是说,这种数据类型必须提供一个默认的构造函数(不需要参数的构造函数)、一个复制构造函数和一个赋值操作运算符。
这样的数据类型包含了通常使用的大多数数据类型,包括基本数据类型(如 int和double等)和Qt的一些数据类型(如QString、QDate和QTime等),不过,Qt的Object及其他的子类(如QWidget和Qdialog等)是不能够存储在容器中的,例如:QList<QToolBar>list;
上述代码是无法通过编译的,因为这些类(QObject及其他的子类)没有复制构造函数和赋值操作运算符
一个可代替的方案是存储QObject及其子类的指针,例如:
QList<QToolBar*>list;
Qt的容器类是可以嵌套的,例如:
QHash<QString,QList<double>>
其中,QHash的键类型是QString,它的值类型是QList<double>。注意,在最后两个“>”符号之间要保留一个空格,否则,C++编译
器会将两个“>”符号解释为一个“>>”符号,导致无法通过编译器编译。
Qt的容器类为遍历其中的内容提供了以下两种方法:
(1)Java风格的迭代器(Java-style iterators)
(2)STL风格的迭代器(STL-style iterators),能够同Qt和STL的通用算法一起使用,并且在效率上也略胜一筹。
- - - - - - - - - - 害你加班的bug,就是我写的! - - - - - - - - - -
0
今日新帖
0
昨日新帖
35
帖子总数
《我的那些事儿》Episode 1——舒振新
达人专区 2016-07-18 11:42
一大波免费课求包养中 ——未来的平面设计狮,上么?
达人专区 2015-11-23 18:43
校招快报 | 10天5院校,就是这么帅!
达人专区 2015-12-02 18:44
这是一个装8人的社红之路
达人专区 2016-03-03 15:00
业精于勤 || 只要肯努力奋斗,就没有不成功的!
达人专区 2016-03-08 19:18
邢帅你这个大骗子!这几年都耗在这里啦!
达人专区 2016-03-13 17:29
周末美好时光,静静地做个mei男子.............
回复:2.2 Qt容器类 -- 2017.12.10