随笔分类 - Qt-STL
摘要:vector list底层结构 动态顺序表,一段连续的空间 带头节点的双向链表随机访问 支持随机访问,访问某个元素效率O(1) 不支持随机访问,访问某个元素效率O(N)插入和删除 任意位置插入和删除效率低,需要搬移元素,时间复杂度为O(N),插入是有可能会造成扩容,增容,开辟空间,拷贝元素,释放旧空
阅读全文
摘要:#include <QCoreApplication>#include <QVector>#include <QDebug>#include <QtAlgorithms> typedef QVector<int>CMyVector; bool caseInsensitiveLessThan(cons
阅读全文
摘要:hashmap有unordered_map,map其实就是很明确的红黑树。map比起unordered_map的优势主要有: map始终保证遍历的时候是按key的大小顺序的,这是一个主要的功能上的差异 map可以做范围查找,而unordered_map不可以。 map的iterator除非指向元素被
阅读全文
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/nicai_xiaoqinxi/article/details/91050289看看谁的速度快? 环境windows10系统Qt4.8.7(g
阅读全文
摘要:我觉得 Qt6 最应该升级的是容器类stdmap 在遍历的时候,同时获取 key 与 value 非常方便:for(auto& var:map){ qDebug()<<var.first<<var.second;}但是 QMap 就做不到这么便利了。for(auto i=qmap.begin();i
阅读全文
摘要:Qt提供了丰富的容器类型,如:QList、QVector、QMap等等。详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int、QString等。如果我们要存储一个对象类型,应该如何做呢?—— 当然是和int类型一样操作,因为这些容器类都是泛型的。不过,
阅读全文
摘要:在软件开发中,我们经常需要在内存中存储一些临时数据用于后续相关计算。我们一般把这些数据存储到某个数组里,或者STL中的某个合适的容器中。其实,在Qt中直接为我们提供了一个QCache类专用于这种需求。 QCache类是一个模板类。QCache<key, T> 就定义了一个缓存,其类似于map,也是存
阅读全文
摘要:在Qt库中为我们提供了一系列的基于模板的容器类。这些类可以被用来存储特定类型的项。例如,如果你需要一个大小可以变得QString数组,那么可以使用QVector<QString>。 这些容器类都是隐式共享的,可重入的,并且在速度上进行了优化,内存占用少,内联代码扩展少,从而可以产生更小的可执行文件。
阅读全文
摘要:因为项目使用QVector,太慢了,听说QMap比QVector查找时快,所以写一个小程序试试; 从30000个数据中找5000个 程序运行截图如下: QVector QMap 一样的数据,找一样的数代码如下图: widget.h #ifndef WIDGET_H#define WIDGET_H #
阅读全文
摘要:Qt提供了丰富的容器类型,如:QList、QVector、QMap等等。详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int、QString等。如果我们要存储一个对象类型,应该如何做呢?—— 当然是和int类型一样操作,因为这些容器类都是泛型的。不过,
阅读全文
摘要:在软件开发中,我们经常需要在内存中存储一些临时数据用于后续相关计算。我们一般把这些数据存储到某个数组里,或者STL中的某个合适的容器中。其实,在Qt中直接为我们提供了一个QCache类专用于这种需求。 QCache类是一个模板类。QCache<key, T> 就定义了一个缓存,其类似于map,也是存
阅读全文
摘要:Qt在<QtAlgorithms>头文件中为我们提供了一系列的全局模板方法,这些模板方法主要用于容器操作,比如qDeleteAll()。其在Qt中的声明如下: void qDeleteAll(ForwardIterator begin, ForwardIterator end)void qDelet
阅读全文
摘要:QMap QHash有近乎相同的功能。很多资料里面介绍过他们之间的区别了。但是都没有说明在使用中如何选择他们。 实际上他们除了存储顺序的差别外,只有key操作的区别。 哈希算法是将包含较多信息的“key”转换成包含信息较少的“key的key”。通过“key的key”查找key,在通过key找到val
阅读全文
摘要:QMap vs. QHash: A small benchmark While working on my Qt developer days 2012 presentation (QtCore in depth), I made a benchmark comparing QMap and QHa
阅读全文
摘要:用Qt做过项目开发的人,肯定使用过诸如QList、QVector、QLinkList这样的模板容器类,它们虽然名字长的不同,但使用方法都大致相同, 因为其使用方法都大体相同,很多人可能随便拿一个容器类来使用,但却不知道这种选择是不是最优,这对于对性能要求不苛刻的应用,这种选择不会有任何影响,但是若性
阅读全文
摘要:自定义类型 #include <QCoreApplication> #include <QSet> #include <QDebug> class testCustomTypeByQSet { public: testCustomTypeByQSet(int v):m_value(v){}; int
阅读全文
摘要:map 是一种数据容器,它提供一种由key 到 value 的映射。map 的key 是唯一的, 也是有序的。map 通常由近似平衡的红黑树来实现。key 的有序性,使得插入,查找节点比较有效。map 的操作(增删改查),通常就是对节点的操作(增删改查)。当然,map 也有创建(new)和销毁(de
阅读全文
摘要:QList算是最常用的集合了,今儿偶然间需要修改QList中的值,结果郁闷了。QList中提供了replace函数来替换item,但不是修改。而at()、value()操作均返回的是const的item引用,无法修改。最后才发现,使用下标([index])才可以获得可修改的item的引用!为啥不给a
阅读全文
摘要:如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则: 1、如果你需要高效的随机存取,而不在乎插入和删除的效率,使用vector 2、如果你需要大量的插入和删除,而不关心随机存取(注意,是随机存取,而不是顺序存取),则应使用list 3、如果你需要随机存取,而且关心两端数据的插入和删
阅读全文