14-顺序容器类
3.3.2 顺序容器类
Qt的顺序容器类有QList、QLinkedList、QVector、QStack和QQueue。
1.QList
QList是最常用的容器类,虽然它是以数组列表(array-list)的形式实现的,但是在其前或后添加数据非常快,QList以下标索引的方式对数据项进行访问。
QList用于添加、插入、替换、移动、删除数据项的函数有:insert()、replace()、removeAt()、move()、swap()、append()、prepend()、removeFirst()和removeLast()等。
QList提供下标索引方式访问数据项,如同数组一样,也提供at()函数,例如:
QList<QString> list;
list << "one" << "two" << "three";
QString str1=list[1]; //str1=="two"
QString str0=list.at(0); //str0=="one"
QList的isEmpty()函数在数据项为空时返回true,size()函数返回数据项的个数。
QList是Qt中最常用的容器类,很多函数的参数传递都是采用QList容器类,例如QAudioDeviceInfo的静态函数availableDevices()的函数原型是:
QList<QAudioDeviceInfo> QAudioDeviceInfo::availableDevices(QAudio::Mode mode)
其返回数据就是QAudioDeviceInfo类型的QList列表。
2.QLinkedList
QLinkedList
除了不提供基于下标索引的数据项访问外,QLinkedList的其他接口函数与QList基本相同。
3.QVector
QVector
QVector的函数接口与QList几乎完全相同,QVector
4.QStack
QStack
QStack<int> stack;
stack.push(10);
stack.push(20);
stack.push(30);
while (!stack.isEmpty())
cout << stack.pop() << endl;
程序会依次输出30,20,10。
5.QQueue
QQueue
QQueue<int> queue;
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
while (!queue.isEmpty())
cout << queue.dequeue() << endl;
程序会依次输出10,20,30。