Qt容器使用
来源:互联网 发布:艾默生网络被收购 编辑:程序博客网 时间:2024/06/06 03:42
Qt容器使用
1.值容器
QList:编写Qt程序时优先考虑使用此容器,支持下标快速访问, QList的实现比较特殊, 内部存储的是一段连续的数组指针,
当存储的类型小于指针大小(如char),或者是指针或者是Qt的隐式共享类(Implicit Sharing)时,那么QList会直接存储这些类型.
数据量在1000以内,QList任何地方插入都非常快,因为QList已经提前在前面和后面分配了内存. 但当存储
的类型大小大于指针大小且不隐式共享时, 每次的插入都要从堆中分配内存,还不如QVector内存分配机制
QVector:在连续空间内分配空间, 支持下标快速访问.根据存储的数据个数内存重新分配时会分配多余空间.
QLinkedList:Qt中真正的链表, 只能使用迭代器访问
QStack:继承QVector, 具有栈的特性
QQueue:继承QList, 具有队列的特性
Qt优先使用QList除了存储访问有优势外, 另一个重要原因是它提供了几个很方便的接口
int removeAll(const T &value) //删除所有value值
bool removeOne(const T &value) // 删除遇到的第一个value值
void removeAt(int i ) //删除指定下标值
T takeAt(int) // 删除指定下标值并返回该值
T value(int i) const // 返回第i下标值, 如果i超出有效范围,返回此类型的默认值
T value(int i , const T &defaultvalue) // 返回第i下标值, 如果i超出有效范围,返回defaultvalue值
综合上述, 当要存储自定义类型值(大小大于指针大小且没有隐式共享)时使用QVector, 否则使用QList
2.字典容器
QMap 使用键值对, 键值按顺序排列, 键值需要提供<. 如果在乎键排序使用此容器.QMultiMap可存储多键值
QHash使用键值对, 查找速度快, 键值任意排列,键值需要提供=. 只在乎查找速度使用此容器,QMultiHash可存储多个键值.
QSet 存储单一值, 查找速度快, 排列任意.
3.各容器时间复杂度
QLinkedList<T>
O(n)
O(1)
O(1)
O(1)
QList<T>
O(1)
O(n)
Amort. O(1)
Amort. O(1)
QVector<T>
O(1)
O(n)
O(n)
Amort. O(1)
Key lookup
QMap<Key, T>
O(log n)
O(log n)
O(log n)
O(log n)
QMultiMap<Key, T>
O(log n)
O(log n)
O(log n)
O(log n)
QHash<Key, T>
Amort. O(1)
O(n)
Amort. O(1)
O(n)
QSet<Key>
Amort. O(1)
O(n)
Amort. O(1)
O(n)
- Qt容器使用
- Qt 容器类 QCache使用
- Qt容器类介绍和使用
- Qt容器类介绍和使用
- Qt 使用qDebug() 打印Qlist 容器数据
- QT容器
- qt 容器
- Qt:容器
- QT 容器
- Qt容器
- QT容器
- QT序列式容器
- Qt 容器类
- QT的容器
- QT容器类
- Qt 容器类
- Qt容器类
- Qt容器类
- 基于hadoop文件系统以及Hbase的微博系统
- 数据结构之单链表C++(模板)
- Unity3D 鼠标拖动3维物体与系统自带拖动刚体物体
- 如何在qtopia中启动QT4程序
- 统计学习方法
- Qt容器使用
- 响应式Web设计(二):响应式Web设计的概念
- 文件重定向
- 非常有用的一些objective-c知识点
- cl命令行编译与链接子系统
- 关于显式调用DLL、隐式调用DLL和查看DLL输出函数
- 成员函数的重载、覆盖、隐藏
- 如何进行软件架构设计?
- 分数和整形数的四则运算