一、概述
QStack是Qt的泛型容器,其实就是Qt实现的栈数据结构。栈的数据结构就不用多说了。
堆栈是后进先出(LIFO)结构。有点基础数据结构知识都是知道这个这么弄得啦。
二、使用
栈的操作函数就3个:使用push()将项添加到堆栈顶部,并使用pop()从堆栈顶部检索。top()函数提供了对最上面的项的访问而不删除它。
例子:
QStack<int> stack;
stack.push(1);
stack.push(2);
stack.push(3);
while (!stack.isEmpty())
cout << stack.pop() << Qt::endl;
//结果输出 3,2,1
QStack继承自QVector。 QVector的所有功能也适用于QStack。
例如,您可以使用isEmpty()来测试堆栈是否为空,并且您可以使用QVector的迭代器类(例如QVectorIterator)遍历QStack。但除此之外,QStack还提供了三个方便的函数,使后进先出语义易于实现:push()、pop()和top()。
关于怎么使用这个 QVector 的话可以看看我另外一个博客 :Qt扫盲-QVector理论总结
QStack的值类型必须是可赋值的数据类型。这涵盖了大多数常用的数据类型,但编译器不允许您将QWidget存储为值;相反,存储一个QWidget *,存一个指针就好啦。