主要说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. 烂泥:mysql5.5主从同步复制配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上篇文章<烂泥:学习mysql数据库主从同步复制原理>中,我们介绍了有关mysql主从复制的基本原理.在这篇文章中,我们来实际测试下mys ...

  2. 如何在centos上安装epel源

    一.EPEL是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/Cent ...

  3. android 中Activity的onStart()和onResume()的区别是什么

    首先你要知道Activity的四种状态:Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态.Paused 当 Ac ...

  4. ELF Format 笔记(七)—— 符号表

    最是那一低头的温柔,像一朵水莲花不胜凉风的娇羞,道一声珍重,道一声珍重,那一声珍重里有蜜甜的忧愁 —— 徐志摩 ilocker:关注 Android 安全(新手) QQ: 2597294287 符号表 ...

  5. Linux 下从头再走 GTK+-3.0 (三)

    之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点.并给窗口加上图标. 首先创建 example3,c 的源文件. #include <gtk/gtk.h> static void a ...

  6. 《Invert》开发日志02:游戏风格定型

    声明:以下涉及到的<God of Light>.<Valiant Hearts : The Great War>.<Angry Birds 2>游戏截图均来自其Ap ...

  7. 使用ZeroNet搭建P2P全球网站

    软件 ZeroNet是一个利用比特币加密和BT技术提供不受审查的网络与通信的BT平台,ZeroNet网络功能已经得到完整的种子的支持和加密连接,保证用户通信和文件共享的安全.使用ZeroNet,你可以 ...

  8. OAuth2授权原理

    最近在做第三方接入的,初步定下使用OAuth2协议,花了些时间对OAuth2的授权方式做了些了解. 我还记得一两年前,跟一位同事聊起互联网时,当时我说过一个想法: 目前不少较为稀有的资源,很多都是论坛 ...

  9. 那些强悍的PHP一句话后门

    强悍的PHP一句话后门这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马.利用404 ...

  10. code blocks 如何实现一键代码格式化

    问题:code blocks 如何实现一键代码格式化 解答:直接右键,选择format use ASstyle