2.2 Qt容器类 -- 2017.12.10

HuRui 发布于 2017/12/10 10:24
查看:424|回复:4

    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的通用算法一起使用,并且在效率上也略胜一筹。

                           71e741c3cd97f441d1167d63ef08db6e003.gif

   - - - - - - - - - -  害你加班的bug,就是我写的! - - - - - - - - - -


查看点赞情况
全部点赞
总计: --

共有4条评论

发布新贴
招版主啦

版主

  • 西米酱 西米酱
  • xly xly
  • 章鱼哥笔记 章鱼哥笔记

注册有礼

完善以下信息,为你推荐课程

  • 学生
  • 白领
  • 高管
  • 自由职业
  • 其他
  • 工作需要
  • 自我提升
  • 兴趣爱好
  • 创业/转型
  • 其他
  • 小白
  • 了解
  • 熟悉
  • 精通
  • 其他
  • 高中/中专
  • 专科
  • 本科
  • 硕士
  • 其他
  • 影视枪战大片特效解析
  • PS视觉惊悚课堂
  • 45天7千平方大厦变形记
  • 原画学习痛点技法全解析
  • 影视动画奇幻课堂
  • AI高端商业设计全攻略
  • UG职场生存必备指南
  • 日赚千元之新媒体行业揭秘
出现异常