Программирование >>  Операторы преобразования типа 

1 ... 133 134 135 [ 136 ] 137 138 139 ... 239


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() генерируют исключения.



1 ... 133 134 135 [ 136 ] 137 138 139 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика