В С++ контейнер list задаёт стандартные двунаправленные списки. В эти списки можно быстро вставлять, а также удалять элементы. Однако операция обращения к элементу по номеру долгая.
Использование list требует подключения
1 |
#include <list> |
Объявляется список так:
1 |
list<int> MyL; |
При работе со списком можно воспользоваться указателями:
- myL.begin() - указатель на начало списка,
- myL.end() - указатель на конец списка,
- myL.rbegin() - реверсивный указатель на конец списка,
- myL.rend() - реверсивный указатель на начало списка.
Полезна также функция проверки списка на пустоту:
- myL.empty().
Основные функции, для работы с отдельными элементами списка:
- myL.push_back(e) - добавить в конец элемент,
- myL.pop_back() - удалить последний элемент,
- myL.front() - первый элемент списка,
- myL.back() - последний элемент списка,
- myL.insert(i, e) - вставка элемента в позицию i,
- myL.erase(first,last) - удаляет последовательность элементов.
При работе со списками, чтобы удобно было по списку ходить, можно пользоваться итераторами, например,
1 |
list<int>::iterator i; |
Наконец, рассмотрим пример работы со списком:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include <list> // подключаем list #include <string> // подключаем строки string #include <iostream> // подключаем cout using namespace std; // чтобы не писать std:: int main() { list<string> L; // инициализация list list<string>::iterator i; L.push_back("January"); // список January L.push_back("March"); // список January March L.push_back("April"); // список January March April i = L.begin(); i++; L.insert(i, "February"); // список January February March April L.push_back("June"); // список January February March April June i = L.end(); i--; L.insert(i, "May"); // список January February March April May June i = L.end(); i--; i--; i--; L.erase(i); // список January February March May June L.pop_back(); // список January February March May for(i = L.begin(); i != L.end(); i++) cout << (*i) << " "; system("pause"); } |