Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOAP.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
494.59 Кб
Скачать

7.2. Двухсторонние очереди (deque).

Класс deque обеспечивает работу с двухсторонней очередью, реализующей произвольный доступ к элементам, добавление в любой конец и удаление из любого конца.

Конструкторы:

  1. explicit deque(); // конструктор по умолчанию

  2. explicit deque(size_t , const T& value = T()); // создает очередь длины n и заполняет одинаковыми элементами типа T : deque<int> v2(10, 1);

  3. template <class InIter> deque(InIter first, InIter last); // первый конструктор копирования:: deque<int> v3(v1.begin(), v1.begin() + 2);

  4. deque(const deque<T>& x); // второй конструктор копирования:

deque <int> v4(v1);

Методы работы с двухсторонней очередью те же, что и с вектором:

  1. reference operator[](size_t num ); // reference - ccылка на элемент без проверки выхода за границы;

  2. reference at(size_t n) ; // ccылка на n – ый элемент;

  3. void push_back(const T& val); // вставка в конец;

  4. void pop_back(); // удаление из конца;

  5. iterator insert(iterator position, const T& val);

  6. void insert(iterator position, size_t num, const T& val);

  7. template<class InIter> void insert(iterator position, InIter start, Initer end);

  8. iterator erase(iterator position);

  9. iterator erase(iterator start, iterator end);

  10. void clear(); // очистка вектора;

  11. reference back(); // reference - ccылка на последний элемент;

  12. reference front(); // ссылка на первый элемент;

Нет capacity() и reserve();

  1. void resize(size_t n, T val = T()); // увеличение или уменьшение размера вектора; val присваивается новым значениям, вставляемым в конец очереди;

Кроме этого, имеются методы:

  1. void push_front(const T& val) ;

  2. void pop_front();

Можно сравнивать очереди, используя операции сравнения как для векторов.

7.3. Списки (List).

List – двухсвязный список, каждый узел которого содержит ссылку на предыдущий и последующий элементы. Списки не поддерживают произвольный доступ к элементу.

Конструкторы:

  1. explicit list(); // конструктор по умолчанию;

  2. explicit list(size_t , const T& value = T()); // создает список длины n и заполняет одинаковыми элементами типа T: list<int> v2(10, 1);

  3. template <class InIter> list(InIter first, InIter last); // первый конструктор копирования: list<int> v3(v1.begin(), v1.begin() + 2);

  4. list (const list <T>& x); // второй конструктор копирования:

list<int> v4(v1);

Методы работы те же, что и с двухсторонней очередью. Кроме того,:

  1. void remove(const T &val); // удаляет все элементы со значением val;

  2. void reverse();// меняет порядок следования на противоположный;

  3. void sort();

  4. void merge(list<T> &ob); // объединение (на базе «слияния») двух упорядоченных списков;

  5. void splice(iterator I, list<T> &ob);// вставляет (за счет изменения указателей) содержимое объекта ob (который становится пустым) перед элементом списка, заданным итератором I;.

  6. void splice(iterator I, list<T> &ob, iterator element); // «удаляет» из объекта ob элемент, на который установлен итератор element, и вставляет его в позицию списка, заданную итератором I;

  7. void splice(iterator I, list<T> &ob, iterator start, iterator end);// «удаляет» из объекта ob элементы, лежащие в диапозоне от start до end и вставляет его в позицию списка заданную итератором I;.

  8. void swap(list<T> &ob);// меняет местами элементы из списка и объекта ob;

  9. void unique() ; // удаляет дубликаты.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]