Списки послідовні контейнери які дозволяють несуміжний розподіл пам'яті. У порівнянні з вектором, список має повільний обхід, але після того, як позиція знайдена, вставка та видалення відбуваються швидко (з постійним часом). Зазвичай, коли ми говоримо про Список, ми говоримо про a двозв'язаний список . Для реалізації однозв’язаного списку ми використовуємо a forward_list .
std::list є класом контейнера List. Це частина стандартної бібліотеки шаблонів C++ (STL) і визначена всередині файл заголовка.
Синтаксис:
std::list name_of_list;>
приклад:
масив рядків
C++
// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }> |
>
в
>Вихід
12 45 8 6>
У наведеному вище прикладі ми створили об’єкт std::list під назвою gqlist та ініціалізував його за допомогою ініціалізації_списку. Ми можемо ініціалізувати об’єкти std::list різними способами тут.
java сканер
Деякі основні операції над std::list
- фронт() – Повертає значення першого елемента в списку.
- назад() – Повертає значення останнього елемента в списку.
- push_front() – Додає новий елемент «g» на початку списку.
- відсунути() – Додає новий елемент «g» у кінець списку.
- pop_front() – Видаляє перший елемент списку та зменшує розмір списку на 1.
- pop_back() – Видаляє останній елемент зі списку та зменшує розмір списку на 1.
- вставити() – Вставляє нові елементи в список перед елементом у вказаній позиції.
- розмір() – Повертає кількість елементів у списку.
- почати() – Функція begin() повертає ітератор, що вказує на перший елемент списку.
- кінець() – Функція end() повертає ітератор, що вказує на теоретичний останній елемент, який слідує за останнім елементом.
Наведений нижче приклад демонструє загальне використання контейнерів списків та їхніх основних функцій у C++.
приклад:
C++
встановити факел
// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::ітератор it;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>'
'>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>'
List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>'
List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>'
gqlist1.front() : '> << gqlist1.front();> >cout <<>'
gqlist1.back() : '> << gqlist1.back();> >cout <<>'
gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>'
gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>'
gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>'
gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }> |
>
>Вихід
рядок введення java
List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>
Наведений вище приклад лише демонструє загальне використання std::list і його функцій-членів. У таблиці нижче наведено всі функції-члени класу std::list і посилання на їх детальне пояснення.
Функції-члени std::list
| Функції | Визначення |
|---|---|
| фронт() | Повертає значення першого елемента в списку. |
| назад() | Повертає значення останнього елемента в списку. |
| push_front(g) | Додає новий елемент «g» на початку списку. |
| push_back(g) | Додає новий елемент «g» у кінець списку. |
| pop_front() | Видаляє перший елемент списку та зменшує розмір списку на 1. |
| pop_back() | Видаляє останній елемент зі списку та зменшує розмір списку на 1. |
| list::begin() | Функція begin() повертає ітератор, що вказує на перший елемент списку. |
| список::кінець() | Функція end() повертає ітератор, що вказує на теоретичний останній елемент, який слідує за останнім елементом. |
| список rbegin() і rend() | rbegin() повертає зворотний ітератор, який вказує на останній елемент списку. rend() повертає зворотний ітератор, який вказує на позицію перед початком списку. |
| список cbegin() і cend() | cbegin() повертає постійний ітератор довільного доступу, який вказує на початок списку. cend() повертає постійний ітератор довільного доступу, який вказує на кінець списку. |
| список crbegin() і crend() | crbegin() повертає постійний зворотний ітератор, який вказує на останній елемент списку, тобто зворотний початок контейнера. crend() повертає постійний зворотний ітератор, який вказує на теоретичний елемент, що передує першому елементу в списку, тобто на зворотний кінець списку. |
| порожній() | Повертає, чи є список порожнім (1) чи ні (0). |
| вставити() | Вставляє нові елементи в список перед елементом у вказаній позиції. |
| стерти() | Видаляє один елемент або діапазон елементів зі списку. |
| призначити() | Призначає нові елементи до списку шляхом заміни поточних елементів і зміни розміру списку. |
| видалити() | Видаляє зі списку всі елементи, які дорівнюють даному елементу. |
| list::remove_if() | Використовується для видалення зі списку всіх значень, які відповідають істині предикату або умові, наданій як параметр функції. |
| зворотний() | Перевертає список. |
| розмір() | Повертає кількість елементів у списку. |
| зміна розміру списку () | Використовується для зміни розміру контейнера списку. |
| sort() | Сортує список у порядку зростання. |
| список max_size() | Повертає максимальну кількість елементів, які може містити контейнер списку. |
| список унікальний() | Видаляє зі списку всі повторювані послідовні елементи. |
| list::emplace_front() і list::emplace_back() | Функція .emplace_front() використовується для вставки нового елемента в контейнер списку та створює об’єкт на місці на початку списку. . Функція emplace_back() використовується для вставки нового елемента в контейнер списку та створює об’єкт на місці в кінці списку. |
| список::очистити() | Функція clear() використовується для видалення всіх елементів контейнера списку, таким чином роблячи його розмір 0. |
| список::оператор= | Цей оператор використовується для призначення нового вмісту контейнеру шляхом заміни існуючого вмісту. |
| list::swap() | Ця функція використовується для заміни вмісту одного списку іншим списком. |
| list splice() | Використовується для перенесення елементів з одного списку в інший. |
| список злиття() | Об’єднує два відсортовані списки в один. |
| список emplace() | Розширює список, вставляючи новий елемент у задану позицію, і створює об’єкт на місці на початку списку, потенційно покращуючи продуктивність, уникаючи операції копіювання |
Пам'ятайте про контейнер списку
- Зазвичай це реалізується за допомогою динамічного двозв’язаного списку з обходом в обох напрямках.
- Швидша операція вставки та видалення порівняно з масивами та векторами.
- Він забезпечує лише послідовний доступ. Довільний доступ до будь-якого середнього елемента неможливий
- Він визначений як шаблон, тому може зберігати будь-який тип даних.
- Він працює як несортований список, що означає, що за замовчуванням порядок списку не зберігається. Однак існують методи сортування.