На этом шаге рассмотрим стек QStack<T>.
Стек реализует структуру данных, работающую по принципу LIFO (Last In First Out, последним пришел — первым ушел), т. е. из стека первым удаляется элемент, который был вставлен позже всех остальных (рис. 1).
Рис.1. Принцип работы стека
Класс QStack<T> представляет собой реализацию стековой структуры. Этот класс унаследован от класса QVector<T>. Процесс помещения элементов в стек обычно называется проталкиванием (pushing), а извлечение из него верхнего объекта — выталкиванием (poping).
Каждая операция проталкивания увеличивает размер стека на 1, а каждая операция вытал кивания — уменьшает на 1. Для этих операций в классе QStack<T> определены методы push() и pop(). Метод top() возвращает ссылку на элемент вершины стека. Следующий пример демонстрирует использование класса стека.
QStack<int> stack; QStack<int> num; for(int i=1;i<=5;i++) { stack.push(i*i); num.push(5-i+1); } while (!stack.empty()) { qDebug() << num.pop() << " элемент:" << stack.pop(); }
Рис.2. Результат работы программы
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим очередь QQueue<T>.