Списки

   
На этом шаге мы приведем общие сведения о списках.

   
Класс list поддерживает функционирование двунаправленного линейного списка. В отличие от вектора, в
котором реализована поддержка произвольного доступа, список позволяет получать к своим элементам только
последовательный доступ. Двунаправленность списка означает, что доступ к его элементам возможен в двух
направлениях: от начала к концу и от конца к началу.

   
Шаблонная спецификация класса list выглядит следующим образом.

Template <class T, class Allocator = allocator<T>> class list

   
Здесь T - тип данных, сохраняемых в списке, а элемент Allocator означает распределитель памяти,
который по умолчанию использует стандартный распределитель.

  explicit list (const Allocator &a = Allocator() );
  explicit list (size_type num, const T &val = T(), 
           const Allocator &a = Allocator() );
  list (const list<T, Allocator> &ob);
  template <class InIter>list(InIter start, InIter end, 
           const Allocator &a = Allocator());

   
Конструктор, представленный в первой форме, создает пустой список. Вторая форма предназначена для создания
списка, который содержит num элементов со значением val. Третья создает список, который содержит элементы в диапазоне, заданном
параметрами start и end. Для класса list определены следующие операторы сравнения:
==, <, <=, !=, > и >=. Функции-члены, определенные в классе list, перечислены в таблице 1.

Таблица 1. Функции-члены, определенные в классе list

Функция-член Описание
template <class InIter>void assign(InIter start, InIter end); Помещает в список последовательность, определяемую параметрами start и end
void assign (size_type num, const T &val); Помещает в список num элементов со значением val
reference back();const_reference back() const; Возвращает ссылку на последний элемент в списке
iterator begin();const_iterator begin() const; Возвращает итератор для первого элемента в списке
void clear(); Удаляет все элементы из списка
bool empty() const; Возвращает истинное значение, если используемый список пуст, и ложное в противном случае
const_iterator end() const;iterator end(); Возвращает итератор, соответствующий концу списка
iterator erase (iterator i); Удаляет элемент, адресуемый итератором i; возвращает итератор, указывающий на элемент, расположенный после удаленного
iterator erase (iterator start, iterator end); Удаляет элементы в диапазоне, задаваемом параметрами start и end; возвращает итератор для элемента, расположенного за последним удаленным элементном
reference front();const_reference front() const; Возвращает ссылку на первый элемент в списке
allocator_type get_allocator() const; Возвращает распределитель памяти списка
iterator insert (iterator i, const T &val = T()); Вставляет значение val непосредственно перед элементом, заданным параметром i; возвращает итератор для этого элемента
void insert (iterator i, size_type num, const T &val); Вставляет num копий значения val непосредственно перед элементом, заданным параметром i
template <class InIter>
void insert( iterator i, InIter start, InIter end);
Вставляет в список последовательность, определяемую параметрами start и end, непосредственно перед элементом, заданным параметром i
size_type max_size() const; Возвращает максимальное число элементов, которое может содержать список
void merge( list<T, Allocator> &ob);
template <class Comp>void merge( list<T, Allocator> &ob, Comp cmpfn);
Объединяет упорядоченный список, содержащийся в объекте ob, с вызывающим упорядоченным списком.
Результат также упорядочивается. После объединения список, содержащийся в ob, остается пустым. Во
второй форме может быть задана функция сравнения, которая определяет, при каких условиях один элемент меньше
другого
void pop_back(); Удаляет последний элемент в списке
void pop_front(); Удаляет первый элемент в списке
void push_back(const T &val); Добавляет в конец списка элемент со значением, заданным параметром val
void push_front(const T &val); Добавляет в начало списка элемент со значением, заданным параметром val
reverse_iterator rbegin();const_reverse_iterator rbegin() const; Возвращает реверсивный итератор для конца списка
reverse_iterator rend();const_reverse_iterator rend() const; Возвращает реверсивный итератор для начала списка
void remove(const T &val); Удаляет из списка элементы со значением val
template <class UnPred>void remove_if(UnPred pr); Удаляет элементы, для которых унарный предикат pr равен значению true
void resize(size_type num, T val = T()); Устанавливает размер списка равным значению, заданному параметром num. Если список для этого нужно удлинить то в конец списка добавляются элементы со значением, заданным параметром val
void reverse(); Реверсирует список
size_type size() const; Возвращает текущее количество элементов в списке
void sort();template <class Comp>void sort(Comp cmpfn); Сортирует список. Вторая форма сортирует список с помощью функции сравнения cmpfn, которая
позволяет определять, при каких условиях один элемент меньше другого
void splice(iterator i,list<T, Allocator> &ob); Вставляет содержимое списка ob в вызывающий список в позиции, указанной итератором i. После выполнения этой операции список ob остается пустым
void splice(iterator i, list<T, Allocator> &ob, iterator el); Удаляет из списка ob элемент, адресуемый итератором el, и сохраняет его в вызывающем списке в позиции, адресуемой итератором i
void splice(iterator i, list<T, Allocator> &ob,iterator start, iterator end); Удаляет из списка ob диапазон, определяемый параметрами start и end, и сохраняет его в вызывающем списке, начиная с позиции, адресуемой итератором i
void swap( list<T, Allocator> &ob); Выполняет обмен элементами вызывающего списка и списка ob
void unique();template <class BinPred>void unique(BinPred pr); Удаляет из списка элементы-дубликаты. Вторая форма для определения уникальности использует предикат pr

   
На следующем шаге мы рассмотрим базовые операции над списком.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий