Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STL5 / lab3-list-deque / lab3-list-deque.doc
Скачиваний:
7
Добавлен:
10.04.2015
Размер:
196.1 Кб
Скачать

Класс deque

Класс deque определен в пространстве имен std, его определение расположено в заголовочном файле <deque> и имеет следующий вид:

template<class T, class A = allocator<T> >

class std::deque

{

public:

// типы

typedef typename A::reference reference;

typedef typename A::const_reference const_reference;

typedef implementation_defined iterator;

typedef implementation_defined const_iterator;

typedef implementation_defined size_type;

typedef implementation_defined difference_type;

typedef T value_type;

typedef A allocator_type;

typedef typename A::pointer pointer;

typedef typename A::const_pointer const_pointer;

typedef std::reverse_iterator<iterator> reverse_iterator;

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

// конструкторы и деструкторы

explicit deque(const A& alloc = A());

explicit deque(size_type n, const T& value = T(), const A& alloc = A());

template<class In>

deque(In first, In last, const A& alloc = A());

deque(const deque<T,A>& x);

~deque();

// присвоение

deque<T,A>& operator=(const deque<T,A>& x);

template<class In>

void assign(In first, In last);

void assign(size_type n, const T& t);

// прямые итераторы

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

// обратные итераторы

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator end() const;

// размер

size_type size() const;

size_type max_size() const;

void resize(size_type n, T c = T());

bool empty() const;

// доступ к элементам

reference operator[](size_type n);

const_reference operator[](size_type n) const;

reference at(size_type n);

const_reference at(size_type n) const;

reference front();

const_refernce front() const;

reference back();

const_refernce back() const;

// модификация

void push_front(const T& x);

void push_back(const T& x);

void pop_front();

void pop_back();

iterator insert(iterator pos, const T& x);

void insert(iterator pos, size_type n, const T& x);

template<class In>

void insert(iterator pos, In first, In last);

iterator erase(iterator pos);

iterator erase(iterator first, iterator last);

void swap(deque<T,A>& x)

void clear();

};

Все перечисленные типы и операции имеют такой же смысл, как и их аналоги в классе вектор, отсутствуют методы capacity() и reserve(). Кроме этого присутствуют операции вставки/удаления элемента в начало дека, которые отсутствуют в vector, но присутствуют в list.

Класс deque как и класс vector поддерживает итераторы произвольного доступа, для этих итераторов применимы операции operator* (оператор разыменования) – получение значения элемента, на который указывает итератор, operator++ - переход к следующему элементу последовательности, а также использование итератора в арифметических выражения для получения итератора указывающего на соответствующий элемент.

1За исключением требования к классу вектор, чтобы все его элементы были расположены в одном фрагменте памяти

2 Более детальные требования к контейнерам можно найти в литературе по С++ или стандарте языка

3 Хотя это не было показано ранее итераторы произвольного доступа также поддерживают operator—для перемещения к предыдущему элементу. Итераторы произвольного доступа поддерживаются для класса vector, string, deque

4 Более детально функциональные объекты или функторы рассматриваются в одной из следующих работ

5 Более детально функциональные объекты или функторы рассматриваются в одной из следующих работ

Соседние файлы в папке lab3-list-deque