基于模板的容器类,更轻量,安全且容易使用,速度消耗和内联方面进行了优化

存储在Qt容器中的数据必须是可赋值的数据类型

Qt的QObject及其他的子类(QWidget,Qdialog)是不能够存储在容器中的,没有复制构造函数和赋值操作符

正确:QList<QToolBar*>list;

错误:QList<QToolBar>list;

Qt的容器类是可以嵌套的

QHash<QString,QList<double> >

后面的两个> >之间必须要有空格哦,否则就当成>>了

常用容器类

QList<T>

存储给定数据类型T的一列数值

列表追加,列表中间插入操作的函数

维护了一个指针数组,该数组存储的指针指向QList的列表项的内容,因此其提供了基于下表的快速访问

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QList<QString> list;//声明了一个栈对象
    QString str("This is a test string");
    list<<str;//通过操作运算符<<将一个QString字符串存储在该列表中
    qDebug()<<list[0]<<"How are you!";
    w.show();
    return a.exec();
}

QLinkedList<T>

链式列表,以非连续的内存块保存数据

不能使用下标,只能使用迭代器访问他的数据项,在很大的列表进行插入操作时,能有更高的效率

QVector<T>

既可以使用下标,也可以使用迭代器访问数据项,继承的子类有QPolygon,QPolygonF和QStack

向后遍历的例子
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QList<int> list;//创建了一个空的列表
    list<<1<<2<<3<<4<<5;//通过操作运算符<<将5个整数输入
    QListIterator<int> i(list);//以该list为参数初始化一个QListIterator对象i
    for(;i.hasNext();)//调用QListIterator<T>::hasNext()函数检查当前迭代点之后是否有列表项
    qDebug()<<i.next();//调用QListIterator<T>::next()函数进行遍历
    w.show();
    return a.exec();
}

向前遍历用的函数

QMutableListIterator<T>读写迭代器,insert(),remove()

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QList<int> list;//创建了一个空的列表
   // list<<1<<2<<3<<4<<5;//通过操作运算符<<将5个整数输入
    QMutableListIterator<int> i(list);//以该list为参数初始化一个QListIterator对象i
    for(int j=0;j<10;j++)
        i.insert(j);
    for(i.toFront();i.hasNext();)
    qDebug()<<i.next();
    for(i.toBack();i.hasPrevious();)
    {
        if(i.previous()%2==0)
            i.remove();
        else
            i.setValue(i.peekNext()*10);
    }
    for(i.toFront();i.hasNext();)
        qDebug()<<i.next();
    w.show();
    return a.exec();
}

STL风格迭代器

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QList<int> list;//创建了一个空的列表
   for(int j=0;j<10;j++)
       list.insert(list.end(),j);
   QList<int>::iterator i;
   for(i=list.begin();i!=list.end();++i)
   {
       qDebug()<<(*i);
       *i=(*i)*10;
   }
   QList<int>::const_iterator ci;
   for(ci = list.constBegin();ci!=list.constEnd();++ci)
       qDebug()<<*ci;
    w.show();
    return a.exec();
}

镇魂歌~Qt5容器类_1相关推荐

  1. 镇魂歌~Qt5容器类_2

    QMap类和QHash类 QHash类更快的查找速度,以任意顺序存储数据项,而QMap总是按照键Key顺序存储数据:键的类型Key必须提供 operator==()函数 一个全局的qHash(Key) ...

  2. 镇魂歌~Qt5字符串

    操作字符串 一个字符串的末尾追加另一个字符串,4种方式连接字符串 其他的组合字符串的方法 qDebug()<<ba:使用qDebug函数输出转换后的字符串 ba.append(" ...

  3. 镇魂歌~Qt5算法及正则表达式

    QtAlgorithms.QtGlobal模块的常用算法+正则表达式 double a = -19.3,b = 9.7; double c = qAbs(a); double max = qMax(b ...

  4. 管道实现进程间通讯 、WaitNamedPipe

    一.管道实现进程间通讯 主要的理论知识 1.什么是管道以及分类 管道是两个头的东西,每一个头各连接一个进程或者同一个进程的不同代码,依照管道的类别分有两种管道,匿名的和命名的:依照管道的传输方向分也能 ...

  5. 雅典娜暴利烹饪系列(上)

    刨冰事件 田中大人曾经问过:和平是无聊的的代名词吗?答:不是. 今天的圣域在纱织的领导下,依然过着比战时更加热闹的日子. 早晨出门时,修罗觉得自己是这个世界上最为幸福的人.为了庆祝他拿到特级厨师证书, ...

  6. 唱响艾泽拉斯_职业篇

    ·光芒(圣骑士的光芒)<联盟的勇士>主题曲 作曲:Tyvek 填词:孤独小狼 演唱:80年代-小同 后期:草莓 黎明第一道阳光 穿透黑暗映过我的脸庞 胸口是染血徽章 心中是我无法承受的伤 ...

  7. 吴刚谈数位红创业故事-4万起步七年历程回顾

    本月 1 月 18 日 是数位红的七周年纪念,至 2007 年 1 月 18 日 ,数位红成立已经七个年头,现将数位红历史大事记写出来以做纪念,同时,也希望能让更多的创业者看到一个由4万人民币起家的小 ...

  8. 论坛数据库设计与性能优化

    题目: 一个简单的论坛系统 1:包含下列信息:  2:每天论坛访问量300万左右,更新帖子10万左右. 请给出数据库表结构设计,并结合范式简要说明设计思路.  结合这个题目把论坛系统设计相关知识点进行 ...

  9. N70/N72常见问题汇总

    引自:http://bbs.imobile.com.cn/viewthread.php?tid=1092547 这里是一些常见的问题,求助前请看里面有没有你需要的答案,或者善用论坛的搜索功能 已更新至 ...

最新文章

  1. 分享3个好用到爆的 Python 模块,点赞收藏
  2. 如何让Sublime Text编辑器支持新的ABAP关键字
  3. struts2 ajax html,Struts2+Jquery+Ajax+Json
  4. 《互联网项目运营分析》第四章 :互联网项目的技术选择与应用
  5. C# WinForm开发系列 - TextBox
  6. php概率计算_php 抽奖概率算法
  7. java 的tree_Java TreeSet higher()方法
  8. 跟踪调试JDK源码时遇到的问题及解决方法
  9. 好用的时间戳转化插件
  10. JAVA基本数据类型所占字节数是多少?
  11. Angular Style
  12. 7月-伟大的事业,一般都是在下半年完成的
  13. 在Excel中引用Visual Studio.NET 2008编写的COM组件
  14. python笔记(1)安装调试
  15. JVM第四节:JVM 执行子程序
  16. 快播王欣发布匿名IM社交软件“马桶MT”
  17. 最速下降法 理论证明
  18. U深度-重装电脑系统
  19. 【个人专用入门级】LAMP一键安装包
  20. 稳压二极管工作原理及参数详解

热门文章

  1. 毕业——少年,你还太弱,请专心练剑
  2. 等价输入干扰补偿的思想
  3. 自媒体清扫行动开始,多家头部区块链媒体被关
  4. 2021上海酵素展商讯-酵素人必备的常见酵素知识(及时收藏)
  5. 【Linux】进程间通信,超详解!
  6. 无人自动驾驶汽车的信息安全问题与汽车以太网安全防护
  7. 手把手教学51单片机第七课 | AT24C02的I²C总线数据传输
  8. ChatGPT Plus价格太贵,可以约上三五知己一起上车体验一下,这个项目就能帮到你
  9. 【力扣】765. 情侣牵手
  10. 一文读懂关于开源的7大理念