一、连续容器

1.连续容器->向量QVector<T>
   向量连续容器是把项存储到内存中相邻的位置的数据结构。
   与C++数组的区别在于,向量连续容器知道自己的大小并且可以被重新定义大小。
   在向量的末尾添加额外的项非常迅速,而在向量的中间插入项是比较费时的。

    eg..QVector<double> vect(3);赋值方式:一.vect[0]=1.0;vect[1]=0.54;vect[2]=-0.146;二.vect.append(1.0);vect.append(0.54);vect.append(-0.146);三.vect<<1.0<<0.54<<-0.146;eg..遍历操作(使用count和[]操作符)double sum=0.0;for(int i = 0;i<vect.count();i++)sum+=vect[i];

2.连续容器->链表QlinkedList<T>
   把数据存储到内存中不相邻的位置的数据结构。
   链表并未提供[]操作符。所以必须使用迭代器来遍历项。
   迭代器还可以用来指定项的位置。

    eg..QLinkedList<QString> list;list.append("Clash");list.append("Ramons");QLinkedList<QString>::iterator i = list.find("Ramons");list.insert(i,"inserts");

3.连续容器->列表QList<T>
   QList是一个数组列表,结合了单一类中QVector<T>和QLinkedList<T>的最重要的有点。
   支持随机访问,且基于索引。在QList<T>的任意一段插入或者删除项都是非常迅速的。
   并且对含1000项以上的列表来说,在中间插入项也是很快的。

  子类: QStringList----QList<QString>
    QStack<T> 堆栈
    QQueue<T> 队列

二、迭代器

1.JAVA类型迭代器:
    只读迭代器:

  QVectorIterator<T> QLinkedListIterator<T> QListIterator<T>

  读写迭代器

QMutableVectorIterator<T> ...

eg..QList<double> list;...QListIterator<double> i(list);while(i.hasNext())dosomething(i.next());

2.STL类型迭代器

  C<T>::iteratorC<T>::const_iterator

STL风格的迭代器的语法是模仿C++数组的指针。我们可以使用++和--操作符来
  移动下一项或者前一项。而使用*操作符来获取当前项。

  eg..QList<double> list;QList<double>::iterator i = list.begin();while(i != list.end()){*i=qAbs(*i);i++;}

  注意:如果想使用STL风格的迭代器遍历某个函数的返回值,则必须复制此容器,
  并且遍历这个副本。

        eg..正确方式:QList<int> list = splitter->sizes();QList<int>::const_iterator i = list.begin();while(i != list.end()){dosomething(*i);i++;}eg..错误方式:QList<int>::const_iterator i = splitter->sizes().begin();while(i != splitter->sizes().end()){...}

  这是因为每次调用QSplitter::sizes()都返回一个新的QList<int>值。

三、遍历容器

  Qt还提供了最后一种在连续容器中遍历项的方式-foreach循环。break和continue声明是支持的。

QLinkedList<Movie> list;...foreach(Movie mov,list){if(mov.title() == "abc")... break;}

转载于:https://www.cnblogs.com/justwake/archive/2012/12/29/justwake_qt_container.html

Qt-连续容器及迭代器相关推荐

  1. C++容器,迭代器,容器的适配器

    容器 顺序容器 主要靠下标和迭代器进行操作.顺序性的主要靠下标,链式的靠迭代器访问. 包含了顺序型的容器和链式的容器. 连续型的包括: vector:向量,可以快速扩展和删除元素,在队尾的操作有优势! ...

  2. C++中STL容器利用迭代器删除元素小结

    C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...

  3. C++11后的常用容器和迭代器

    文章目录 一.string容器 二.vector容器 三.list容器 1.构造函数 2.特性操作 3.元素操作 4.赋值操作 5.交换.反转.排序.归并 6.比较操作 7.插入和删除 四.pair键 ...

  4. C++之模板类_容器_迭代器_算法_GCC_make

    站在编译器和C的角度剖析c++原理, 用代码说话 类模板基础 首先什么是模板: 模板就是把要处理的函数或类的类型参数化,表现为参数的多态性. 模板用来表现逻辑结构相同,但具体数据元素类型不同的对象的通 ...

  5. QT关联容器QMap,QHash的Key值自动排序问题

    QT关联容器根据key -> value映射, 元素根据key值大小排序,与插入顺序无关. 1. QMap  自动排序 2. QHash 速度更快 转载于:https://www.cnblogs ...

  6. C++中STL和容器、迭代器、算法之间的关系

    自学习C++以来,一直对STL.容器.迭代器.算法甚是困惑. 参考一些资料,加上自己的理解,整理如下 如果说程序等于数据结构+算法,STL就是一个小程序库,之所以说小,是因为容器模板中常用的函数有限, ...

  7. java 容器_我也来聊聊,JAVA容器与迭代器

    java的容器与迭代器是一个老生常谈的话题了. 本文旨在与大家分享一些关于双向链表与迭代器的运用小技巧,并希望本篇文章的内容能够在项目中给你带来帮助. Stack与LinkedList Stack是一 ...

  8. C++(STL):29 ---关联式容器map 迭代器

    无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...

  9. STL 容器和迭代器连载6_顺序容器的操作3

    2019独角兽企业重金招聘Python工程师标准>>> /*- ========================================================== ...

最新文章

  1. javascript断点调试方法
  2. [SimplePlayer] 实现一个简单的播放器
  3. 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
  4. JS结合Cookie实现验证码功能
  5. mysql 引擎 类型_MySQL(一)之存储引擎类型
  6. 全面拥抱云原生应用研发的拐点已经到来
  7. Hive 与 RDBMS的区别
  8. c++提取map key_写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?...
  9. 【Java开发工具】Generator:Java代码生成工具
  10. 单片机学习笔记(五)
  11. 移动硬盘/U盘上装Windows 7旗舰版(VHD版)
  12. 中国的KNX 智能家居系统,将实现最高级别的安全保障!
  13. Eclipse快捷键(全)
  14. 使用GROUP BY分组
  15. Linux 的常用系统及网络命令
  16. strcpy_s与strcpy
  17. ImportError: packaging>=20.0 is required for a normal functioning of this mo
  18. 无人机数字孪生算法研究
  19. Vue的滚动条-vue-happy-scroll用法
  20. 把N1打造成高效能的多平台游戏机

热门文章

  1. pycharm error:no module named caffe
  2. java 一对多 数据结构_请教一下,java 有没有什么数据结构可以保存一对多的关系的??...
  3. 环形队列的输出_Java数据结构:使用数组实现环形队列详解
  4. python比flask更好的框架_(入门篇)Python框架之FastAPI——一个比Flask和Tornado更高性能的API 框架...
  5. “华尔街之狼”:预计BTC价格将反弹至10万美元
  6. 数据:DOGE近24小时交易额约为107.91亿美元
  7. 赛锐信息:SAP img 文档
  8. Java基于Redis的分布式锁
  9. 【Objective-C】探索Category底层的实质
  10. OpenCV中的图像插值示例