Контейнер list (двусвязный список)

Контейнер list реализует структуру данных "двусвязный список" с возможностью добавления (и удаления) элементов и в начало, и в конец, и в середину списка за время $О(1)$.

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

Создание списка

list<int> A -- создание пустого списка для хранения элементов типа int.

list<int> A(n, value) Cоздается список из n элементов со значением value.

Некоторые методы класса list

front() -- первый элемент списка

back() -- последний элемент списка

push_back(value) -- добавляет элемент в конец списка

push_front(value) -- добавляет элемент в начало списка

insert(it, value) -- вставка некоторого значения value перед it

insert(i, n, value) -- вставка n копий элементов со значением value перед i

pop_front() -- удаляет первый элемент списка

pop_back() -- удаляет последний элемент (не возвращает значение!)

erase(it) -- удаляет элемент, на который указывает данный итератор

erase(start, fin) -- удалению подлежат все элементы между start и fin, но fin не удаляется.

clear() -- удаляет все элементы списка

size() -- выдает количество элементов списка

empty() -- возвращает истину, если вызывающий список пуст

Последовательный обход списка

list<double> A;
list<double>::iterator it;
for(it=A.begin(); it!=A.end(); it++)
{
     sum+=(*it); //доступ к элементам по итератору
}

Тип итератора должен строго соответствовать типу контейнера с учётом параметров шаблона.