Этот контейнер реализует двунаправленный линейный список, в котором используется последовательный доступ с начала или конца списка. Элемент списка имеет структуру

В классе имеется 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;

}