|
Программирование >> Операторы преобразования типа
очередь :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:
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |