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

1 ... 136 137 138 [ 139 ] 140 141 142 ... 239


очередь :is1ze type

О Беззнаковый целый тип для значений размера. О Эквивалент:

контейнер::s1ze type

очередь: :conta1ner type Тип контейнера.

Операции

очередь;:queue С)

О Конструктор по умолчанию. О Создает пустую очередь.

explicit Очереди::queue Cconst Container& cont)

О Создает очередь, инициализированную элементами cont О Все элементы cont копируются в очередь.

size type очередь::size С) const

О Возвращает текущее количество элементов.

О Для проверки отсутствия элементов в очереди рекомендуется использовать функцию emptyO, поскольку она может работать быстрее.

bool очереу/ь::empty С) const

О Проверяет, пуста ли очередь.

О Эквивалент (но может работать быстрее):

очередь::size()==0

void очередь;:push (const va]ue typee elem)

Вставляет в очередь копию параметра elem, в результате чего она становится новым последним элементом.

valuejypee очередь: :front О

const value type&. очередь:: front О const

О Обе формы возвращают следующий элемент очереди, то есть элемент, который был вставлен первым (после всех остальных элементов очереди).

О Перед вызовом необходимо убедиться в том, что очередь содержит хотя бы один элемент (slzeO>0), иначе вызов приводит к непредсказуемым последствиям.

О Первая форма для неконстантных очередей возвращает ссылку, что позволяет модифицировать следующий элемент во время его нахождения в очереди. Хорошо это или нет - решайте сами.



value type очередь::back О

const value type очередь:: back () const

О Обе формы возвращают последний элемент очереди, то есть элемент, который был вставлен последним (после всех остальных элементов очереди).

О Перед вызовом необходимо убедрпъся в том, что очередь содержит хотя бы один элемент (size()>0), иначе вызов приводит к непредсказуемым последствиям.

О Первая форма для неконстантных очередей возвращает ссылку, что позволяет модифицировать последний элемент во время его нахождения в очереди. Хорошо это или нет - решайте сами.

void Очередь::рор С)

О Удаляет из очереди следующий элемент, то есть элемент, который был вставлен первым (перед всеми элементами очереди).

О Функция не имеет возвращаемого значения. Чтобы обработать значение верхнего элемента, следует предварительно вызвать функцию front().

О Перед вызовом необходимо убедиться в том, что очередь содержит хотя бы один элемент (size()>0), иначе вызов приводит к непредсказуемым последствиям.

bool сравнение (const очередь queuel. const очередь queue2)

О Возвращает результат сравнения двух очередей одного типа. О Параметр сравнение - одна из следующих операций:

operator == operator .= operator < operator > operator <= operator >=

О Две очереди считаются равными, если они содержат одинаковое количество элементов, если элементы попарно совпадают и следуют в одинаковом порядке (то есть проверка двух соответствующих друг другу элементов на равенство всегда дает true).

О Отношение -меньше/больше между контейнерами проверяется по лексикографическому критерию. Лексикографический критерий рассматривается при описании алгоритма lexicographical compare() на с. 356.

Пользовательская реализация очереди

Стандартный класс queueo ставит на первое место не удобство и безопасность, а скорость работы. У автора на этот счет другое мнение, поэтому вашему вниманию предлагается нестандартная реализация очереди. Она обладает двумя преимуществами:

О функция рор() возвращает следующий элемент;

О при пустой очереди функции рор() и front() генерируют исключения.



Кроме того, из реализации исключены операции, лишние для рядового пользователя очередей (например, операции сравнения и функция Ьаск()). Полученный класс очереди приведен ниже.

cont/queue.hpp

1 * ********************+**************Tlf*************

* Queue.hpp

* - более удобный и безопасный класс очереди

* ************************************************************/

#ifndef QUEUE HPP #deflne QUEUEJPP

Iinclude <deque> Iinclude <exception>

template <class T> class Queue { protected:

std::deque<T> c; Контейнер для хранения элементов

public:

/* Класс исключения, генерируемого функциями рорО и front{) * при пустой Очереди */

class ReadEmptyQueue : public std::exception { public:

virtual const char* whatO const throwC) { return read empty queue ;

Количество элементов

typename std::deque<T>::size type sizeC) const { return C.sizeO;

Проверка пустой очереди bool emptyO const { return c.emptyC):

Занесение элемента в очередь void push Cconst T& elem) { c.push backCelem);

Извлечение элемента из очереди с возвращением его значения Т pop С) {

if CcemptyO) {

throw ReadEmptyQueueO:



1 ... 136 137 138 [ 139 ] 140 141 142 ... 239

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