Найти в Дзене

Контейнер list в С++

STL - стандартная библиотека шаблонов в С++ (Standard Template Library) содержит множество полезных вещей. В том числе контейнер list, который удобно использовать для вставки, сортировки, объединения списков и других операций над объектами. Например, если вам надо отсортировать какой-то список, то вы можете загрузить этот список в контейнер list и выполнить сортировку. Ну а дальше в зависимости от задачи - можно вывести на экран или выполнить какие-то другие действия. Правда, некоторые вещи делать нельзя. Например, нельзя обратиться к произвольному элементу списка (как в массиве по индексу). Точнее, можно (например, перебрать список в цикле и найти нужный элемент), но все эти способы не быстрые и не очень удобные. Впрочем, у каждой вещи своё предназначение. И своё предназначение этот контейнер выполняет. Пример: Здесь мы сначала объявляем переменную strings - список строк. В угловых скобках после слова list мы указываем тип элементов списка. Это могут быть, разумеется, не только строки

STL - стандартная библиотека шаблонов в С++ (Standard Template Library) содержит множество полезных вещей. В том числе контейнер list, который удобно использовать для вставки, сортировки, объединения списков и других операций над объектами.

Например, если вам надо отсортировать какой-то список, то вы можете загрузить этот список в контейнер list и выполнить сортировку. Ну а дальше в зависимости от задачи - можно вывести на экран или выполнить какие-то другие действия.

Правда, некоторые вещи делать нельзя. Например, нельзя обратиться к произвольному элементу списка (как в массиве по индексу). Точнее, можно (например, перебрать список в цикле и найти нужный элемент), но все эти способы не быстрые и не очень удобные. Впрочем, у каждой вещи своё предназначение. И своё предназначение этот контейнер выполняет.

Пример:

Здесь мы сначала объявляем переменную strings - список строк. В угловых скобках после слова list мы указываем тип элементов списка. Это могут быть, разумеется, не только строки (для примера я ещё создал список целых чисел).

Затем заполняем список строк какими-то значениями. Для этого можно использовать методы push_back() или push_front(). Первый вставляет (помещает) элемент в конец списка, второй - в начало.

Потом сортируем список и выводим его содержимое на экран в цикле, где получаем первый элемент списка, выводим его, затем удаляем. Таким образом второй элемент становится первым и цикл повторяется. Разумеется, удалять элемент не обязательно. Просто хотелось показать больше методов в одном примере.

Метод empty() возвращает true, если список пустой. И в начале цикла мы проверяем, не является ли список пустым. Метод front() получает первый элемент списка, метод end() - последний. Метод pop_front() удаляет (извлекает) первый элемент списка, метод pop_back() - удаляет последний элемент.

Просто перебрать элементы списка без удаления можно так:

for (auto str: strings)
{
cout << str << endl;
}

Только учтите, что такая возможность в “старом” С++ отсутствует. Поэтому ваш компилятор должен поддерживать более-менее современный стандарт С++. Точно не знаю, когда это появилось. Но могу сказать, что в С++ 1998 это не работает, а в С++ 2011 работает. Видимо, где-то в этот период и появилось )))

Также не забывайте, что заполнить список можно на этапе объявления:

list<int> int_nums = {5, 6, 2, 3, 15};

Ну вот как-то так. Для краткого знакомства вполне достаточно. До остального можно додуматься самостоятельно. Ну или в крайнем случае почитать документацию )))

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.