主要说Qt的以下几种容器

1.QList<T>

2.QLinkedList<T>

3.Map<T>

和一些常用的容器方法的使用

qSort

qCopy

qFind

1.QList<T>泛型集合是最常用的一种容器

看一下它的常用 操作

添加删除和两个迭代器

QListIterator和QMutableListIterator
#include <QCoreApplication>
#include<QList>
#include<QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<int> listInt; //添加
for(int i =;i<;i++)
{
listInt.append(i);
//也可以这样添加元素
//listInt<<i;
}
//删除
qDebug()<<"删除3";
listInt.removeAt();
//查询
foreach (int item, listInt) {
qDebug()<<item;
} qDebug()<<"Iterator"; //迭代器
QListIterator<int> iterator(listInt);
while(iterator.hasNext())
{ qDebug()<<iterator.next();
if(iterator.hasNext())
qDebug()<<"the Next is :"<<iterator.peekNext();
}
//返转
iterator.toBack();
while(iterator.hasPrevious())
{
qDebug()<<iterator.previous();
}
qDebug()<<"可变迭代器QMutableListIterator";
//可变的迭代器
QMutableListIterator<int> mutableiterator(listInt);
mutableiterator.insert();
mutableiterator.insert();
mutableiterator.insert();
while(mutableiterator.hasNext())
{
int i= mutableiterator.next();
if(i==||i==)
{
mutableiterator.remove();
}
} //查询
foreach (int item, listInt) {
qDebug()<<item;
}
return a.exec();
}

2.QLinkedList<T>

QLinkedList<T>和QList<T>差不多,不同的一点是它是用迭代器做的访问项

也就是说QList<int> list只以通过这样访问它的内容list[i]而QLinkedList不可以只能用Iterator

性能上它要高于QList<T>

#include <QCoreApplication>
#include<QLinkedList>
#include<QDebug> int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QLinkedList<int> link;
link<<<<<<<<<<;
qDebug()<<"迭代器访问QLinkedListIterator";
QLinkedListIterator<int> iterator(link);
while(iterator.hasNext())
{
qDebug()<< iterator.next();
}
//删除第一个2
link.removeOne();
//添加两个3这两种方式一样
link.push_back();
link.append();
//删除所有的3
link.removeAll();
qDebug()<<"普通访问foreach";
foreach (int item, link) {
qDebug()<< item;
} qDebug()<<"迭代器QMutableLinkedListIterator";
QMutableLinkedListIterator<int> mutableIter(link); while(mutableIter.hasNext())
{
int i= mutableIter.next();
if(i==)
{
mutableIter.insert();
}
if(i==)
{
mutableIter.remove();
}
qDebug()<<i;
}
qDebug()<<"迭代器QMutableLinkedListIterator重新访问";
mutableIter.toFront();
while(mutableIter.hasNext())
{
int i= mutableIter.next();
qDebug()<<i;
}
//mutable
return a.exec();
}
a

3Map<T>

map类型是一个键值对 key/value组成 其它的和上边的两个集合没什么区别

#include <QCoreApplication>
#include<QMap>
#include<QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<int,QString> map;
map.insert(,"a");
map.insert(,"b");
map.insert(,"c");
QMutableMapIterator<int,QString> mutableIte(map);
while(mutableIte.hasNext())
{
mutableIte.next();
qDebug()<<mutableIte.key()<<" "<<mutableIte.value();
}
return a.exec();
}

下边说一下常用的集合操作方法

qSort

qCopy

qFind

#include <QCoreApplication>
#include<QList>
#include<QDebug>
#include<QVector>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<int> listStrs;
listStrs<<<<<<<<<<;
qSort(listStrs);
foreach (int i, listStrs) {
qDebug()<<i;
}
qDebug()<<"____________________________";
listStrs.clear();
listStrs<<<<<<<<<<;
qSort(listStrs.begin()+,listStrs.end()-);
foreach (int i, listStrs) {
qDebug()<<i;
} qDebug()<<"______________qCopy______________";
QVector<int> newVec();
qCopy(listStrs.begin(),listStrs.end(),newVec.begin());
foreach (int i, newVec) {
qDebug()<<i;
}
qDebug()<<"______________qFind______________";
listStrs.clear();
listStrs<<<<<<<<<<;
QList<int>::const_iterator iterFin=qFind(listStrs,);
if(iterFin!=listStrs.end())
{
qDebug()<<*iterFin;
}
else
{
qDebug()<<"notFound!";
}
return a.exec();
}

Qt学习笔记常用容器的更多相关文章

  1. Java学习笔记--常用容器

    容器 1. 出现原因 解决程序运行时需要创建新对象,在程序运行前不知道运行的所需的对象数量甚至是类型的问题. Java中提供了一套集合类来解决这些问题包括:List.Set.Queue.Map 2. ...

  2. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  3. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  4. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  5. QT学习笔记(一)——Helloworld

    QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...

  6. qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)

    笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...

  7. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  8. Qt学习笔记(2)-利用StackWidget实现选项卡式页面

    学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...

  9. Docker学习笔记 - Docker容器之间的连接

    学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN  ...

随机推荐

  1. php.ini配置解析

    为了让PHP读取这个文件,它必须被命名为'php.ini'. PHP 查找配置文件次序:当前工作目录:环境变量PHPRC  ; 指明的路径:编译时指定的路径.  ; 在windows下,编译时的路径是 ...

  2. 0011《SQL必知必会》笔记07 数据的插入、更新和删除

    1.插入完整的行或一部分:INSERT INTO 表名(列名1-n) VALUES (对应的值1-n) INSERT INTO products(prod_id, vend_id, prod_name ...

  3. Linux IPC POSIX 消息队列

    模型: #include<mqueue.h> #include <sys/stat.h> #include <fcntl.h> mq_open() //创建/获取消 ...

  4. Windows10 利用 Docker 配置 TensofFlow 深度学习工具

    TensorFlow 这个不用多介绍了吧,大家都知道,Google的开源深度学习软件库,官网点这里:https://www.tensorflow.org/ 当然这个工具官方支持装在 Ubuntu 和 ...

  5. linux 分区 物理卷 逻辑卷

    今天我们主要说说分区.格式化.SWAP.LVM.软件RAID的创建哈~ 格式化 查看当前分区:fdisk   -l 这个命令我们以前是讲过的,我现在问下,ID那项是什么意思? 83 是代表EXT2和E ...

  6. Eclipse常用的十个方便的快捷键

    Ctrl+F:在当前代在cg中查找关键字 Ctrl+H:打开查找窗口 Ctrl+/: 屏蔽代码(注释): (以下转自:http://wenku.baidu.com/view/d291ade3172de ...

  7. speex进行音频去噪

    应用speex进行音频去噪,speex功能很强大,因为opus的出现,用speex进行编码/解码的人几乎没有了,但是用speex来进行降噪,去除回声,增益还是很多. 这里用speex进行音频去噪,主要 ...

  8. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  9. [麦先生]TP3.2之微信开发那点事[基础篇](网页授权开发之小Demo)

    用户à 点击按钮进入授权页面并确认授权à 服务器返回code给开发者à 利用code,APPID,APPsecret组合数据请求API获取access_token和openidà 利用access_t ...

  10. 《数据结构》之串的模式匹配算法——KMP算法

    //串的模式匹配算法 //KMP算法,时间复杂度为O(n+m) #include <iostream> #include <string> #include <cstri ...