(二十六)Qt容器之顺序容器

来源:互联网 发布:艾弗森体测数据弹跳 编辑:程序博客网 时间:2024/05/21 21:41

顺序容器(容器中的数据线性存储)有:QList(数组列表)、QLinkedList(链表)、QVector(向量)、QStack(栈)、QQueue(队列)

 

QVector(向量):

1、  QVector<T>是一个类似数组的容器,它将数据存储在连续的内存空间中

2、  QVector<T>知道自己的长度,并且可以改变其大小

3、  QVector<T>支持随机访问

4、  在QVector<T>尾部添加元素的效率都非常的高,但在头部或中间位置插入元素或者删除元素可能很耗时

 

如果我们预知QVector<T>对象应该存储多少个元素时,可以直接初始化QVector<T>大小,在不知道的情况下也可以对QVector<T>默认初始化(基本数据类型与指针类型会被初始化为0)后再使用成员函数

void

append ( const T & value )

向QVector<T>末尾添加元素

 

QVector类也重载了数组访问操作符与输出运算符:

T &

operator[] ( int i )

const T &

operator[] ( int i ) const

QVector<T> &

operator<< ( const T & value )

QVector<T> &

operator<< ( const QVector<T> & other )

这使访问QVector<T>中某个位置的元素与向容器中添加元素更加方便快捷

 

QLinkedList(链表):

1、  QLinkedList<T>是QT中的双向链表,向其中插入与删除元素效率都很高(消耗常量时间的插入与删除)

2、  QLinkedList<T>不支持随机访问,必须使用迭代器来访问

3、  QLinkedList<T>重载了operator<<

 

QList(数组列表):

1、  QList<T>是Qt中最常用的容器类,它结合了QVector<T>与QLinkedList<T>的优点,它支持随机访问

2、  QList<T>在QLIst<T>的任意一端插入或者移除元素都是非常快速的。

3、  当QLinkedList<T>中有1000个(包括)以上个元素时,在它中间插入元素也很快

4、  除非我们需要进行在很大的集合的中间位置的添加、删除操作,或者是需要所有元素在内存中必须连续存储,否则我们应该一直使用Qlist<T>

5、 QList<T>重载operator[] 与operator<<


QStack(栈):

QStack<T>是一个提供后进先出(LIFO)语义的向量

 

QQueue(队列):

QQueue<T>是一个提供先进先出(FIFO)语义的列表

 

 

 

0 0