镇魂歌~Qt5容器类_1
基于模板的容器类,更轻量,安全且容易使用,速度消耗和内联方面进行了优化
存储在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相关推荐
- 镇魂歌~Qt5容器类_2
QMap类和QHash类 QHash类更快的查找速度,以任意顺序存储数据项,而QMap总是按照键Key顺序存储数据:键的类型Key必须提供 operator==()函数 一个全局的qHash(Key) ...
- 镇魂歌~Qt5字符串
操作字符串 一个字符串的末尾追加另一个字符串,4种方式连接字符串 其他的组合字符串的方法 qDebug()<<ba:使用qDebug函数输出转换后的字符串 ba.append(" ...
- 镇魂歌~Qt5算法及正则表达式
QtAlgorithms.QtGlobal模块的常用算法+正则表达式 double a = -19.3,b = 9.7; double c = qAbs(a); double max = qMax(b ...
- 管道实现进程间通讯 、WaitNamedPipe
一.管道实现进程间通讯 主要的理论知识 1.什么是管道以及分类 管道是两个头的东西,每一个头各连接一个进程或者同一个进程的不同代码,依照管道的类别分有两种管道,匿名的和命名的:依照管道的传输方向分也能 ...
- 雅典娜暴利烹饪系列(上)
刨冰事件 田中大人曾经问过:和平是无聊的的代名词吗?答:不是. 今天的圣域在纱织的领导下,依然过着比战时更加热闹的日子. 早晨出门时,修罗觉得自己是这个世界上最为幸福的人.为了庆祝他拿到特级厨师证书, ...
- 唱响艾泽拉斯_职业篇
·光芒(圣骑士的光芒)<联盟的勇士>主题曲 作曲:Tyvek 填词:孤独小狼 演唱:80年代-小同 后期:草莓 黎明第一道阳光 穿透黑暗映过我的脸庞 胸口是染血徽章 心中是我无法承受的伤 ...
- 吴刚谈数位红创业故事-4万起步七年历程回顾
本月 1 月 18 日 是数位红的七周年纪念,至 2007 年 1 月 18 日 ,数位红成立已经七个年头,现将数位红历史大事记写出来以做纪念,同时,也希望能让更多的创业者看到一个由4万人民币起家的小 ...
- 论坛数据库设计与性能优化
题目: 一个简单的论坛系统 1:包含下列信息: 2:每天论坛访问量300万左右,更新帖子10万左右. 请给出数据库表结构设计,并结合范式简要说明设计思路. 结合这个题目把论坛系统设计相关知识点进行 ...
- N70/N72常见问题汇总
引自:http://bbs.imobile.com.cn/viewthread.php?tid=1092547 这里是一些常见的问题,求助前请看里面有没有你需要的答案,或者善用论坛的搜索功能 已更新至 ...
最新文章
- 分享3个好用到爆的 Python 模块,点赞收藏
- 如何让Sublime Text编辑器支持新的ABAP关键字
- struts2 ajax html,Struts2+Jquery+Ajax+Json
- 《互联网项目运营分析》第四章 :互联网项目的技术选择与应用
- C# WinForm开发系列 - TextBox
- php概率计算_php 抽奖概率算法
- java 的tree_Java TreeSet higher()方法
- 跟踪调试JDK源码时遇到的问题及解决方法
- 好用的时间戳转化插件
- JAVA基本数据类型所占字节数是多少?
- Angular Style
- 7月-伟大的事业,一般都是在下半年完成的
- 在Excel中引用Visual Studio.NET 2008编写的COM组件
- python笔记(1)安装调试
- JVM第四节:JVM 执行子程序
- 快播王欣发布匿名IM社交软件“马桶MT”
- 最速下降法 理论证明
- U深度-重装电脑系统
- 【个人专用入门级】LAMP一键安装包
- 稳压二极管工作原理及参数详解