|
Программирование >> Операторы преобразования типа
st.push(4); st.push(5); Извлечение одного элемента без обработки st.popO: Извлечение и вывод оставшихся элементов while С!St.emptyO) { cout st.topO : St.popO: cout endl: Результат выполнения программы: 3 2 4 77 Строение класса stack Интерфейс класса stacko настолько компактен, что в нем можно легко разобраться, проанализировав типичную реализацию: namespace std { template <class Т. class Container = deque<T> > class stack { public: typedef typename Container::value type value type: typedef typename Container;:size type s1ze type; typedef Container container type: protected: Container c; Контейнер public: explicit stack(const Containers = ContainerO): bool emptyO const { return c.emptyO; } size type sIzeO const { return csizeO; } void pushCconst value type& x) { c.push back(x}: } void popO { c.pop back(): } value type& topO { return c.back(); } const value type& topO const { return c.backO; } template <class T. class Container> bool operator==(const stack<T. Conta1ner>&. const stack<T. Container>&); template <class T. class Container> bool operator< (const stack<T. Container>&. const stack<T, Conta1ner>&): .. (Другие операторы сравнения) Ниже приводятся более подробные описания членов класса stacko. Определения типов стек:;value type О Тип элементов. О Эквивалент: контейнер::value type стек::size type О Беззнаковый целый тип для значений размера. О Эквивалент: контейнер::size type стек::container type Тип контейнера. Операции стек:;stack () О Конструктор по умолчанию. О Создает пустой стек. explicit CTeK::stack (const Containers cont) О Создает стек, инициализированный элементами cont. О Все элементы cont копируются в стек. 5ize type cre/<:;size О const О Возвращает текущее количество элементов. О Для проверки отсутствия элементов в стеке рекомендуется использовать функцию ennptyO, поскольку она может работать быстрее. bool сгек: retnpty О const О Проверяет, пуст ли стек. О Эквивалент (но может работать быстрее): стен: :size()==0 void cre/<::push (const value typee elem) О Вставляет копию elem в стек, в результате чего она становится новым первым элементом. value typee сгек::top О const valuejiypeb, сгек: :top О const О Обе формы возвращают верхний элемент стека, то есть элемент, который был вставлен последним (после всех остальных элементов стека). О Перед вызовом необходимо убедиться в том, что стек содержит хотя бы один элемент (size()>0), иначе вызов приводит к непредсказуемым последствиям. О Первая форма для неконстантных стеков возвращает ссылку, что позволяет модифицировать верхний элемент во время его нахождения в стеке. Хорошо это или нет - решайте сами. void стен::рор () О Удаляет из стека верхгшй элемент, то есть элемент, который был вставлен последним (после всех остальных элементов стека). О Функция НС имеет возвращаемого значения. Чтобы обработать значение верхнего элемента, следует предварительно вызвать функцию top(). О Перед вызовом необходимо убедиться в том, что стек содержит хотя бы один элемент (size()>0), иначе вызов приводит к непредсказуемым последствиям. bool сравнение (const сгек& stackl. const стенЬ, stack2) О Возвращает результат сравнения двух стеков одного типа. О Параметр сравнение - одна из следующих операций: operator == operator != operator < operator > operator <= operator >= О Два стека считаются равными, если они содержат одинаковое количество элементов, если элементы попарно совпадают и следуют в одинаковом порядке (то есть проверка двух соответствующих друг другу элементов на ргшенство всегда дает true). О Отношение меньше/больше; между контейнерами проверяется по лексикографическому критерию. Лексикографический критерий рассматривается при описании алгоритма (exicographica( connpare() на с. 356. Пользовательская реализация стека Стандартный класс stacko ставит на первое место не удобство и безопасность, а скорость работы. У автора на этот счет другое мнение, поэтому вашему вниманию предлагается нестандартная реализация стека. Она обладает двумя преимуществами: О функция рор() возвращает верхний элемент; О при пустом стеке функции рор() и top() генерируют исключения.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |