Этот контейнер реализует двунаправленный линейный список, в котором используется последовательный доступ с начала или конца списка. Элемент списка имеет структуру
В классе имеется 4 конструктора, перегружены операции сравнения и определены 42 член-функции. Так как список двунаправленный, то добавление и удаление выполняются как с начала, так и с конца. Ниже на рисунке приведены основные операции для работы со списком
push_front(значение) – добавить в начало,
push_back(значение) – добавить в конец,
pop_front() – удалить с начала,
pop_back() – удалить с конца,
insert(итератор,значение) – вставить в середину, место указывается итератором,
erase(итератор) – удалить из середины, место указывается итератором,
front() – возвращается значение элемента с начала списка,
back() – возвращается значение элемента с конца списка.
Пример
#include <list.h>
#include <iostream.h>
#include <conio.h>
// Сортировка прямым выбором: Min число находится в исходном списке,
// удаляется из него и добавляется в новый список
int main(int argc, char* argv[])
{list <int>l1,l2;
int i,k;
cout<<"\nlist:";
for(i=0;i<10;i++)
{l1.push_back(k=random(30));
cout<<k<<' '; }
list<int>::iterator pl,pmin;
cout<<"\nВывод через Iterator:";
for(pl=l1.begin();pl!=l1.end();pl++)
cout<<*pl<<' ';
while(!l1.empty())
{pmin=min_element(l1.begin(),l1.end());//из algorithm.h
l1.erase(pmin); // удалить min из списка l1
l2.push_back(*pmin);//добавить в список l2
}
cout<<"\n rezult: ";
for(pl=l2.begin();pl!=l2.end();pl++)
cout<<*pl<<' ';
getch();
return 0;
}