logo

Список у стандартній бібліотеці шаблонів C++ (STL)

Списки послідовні контейнери які дозволяють несуміжний розподіл пам'яті. У порівнянні з вектором, список має повільний обхід, але після того, як позиція знайдена, вставка та видалення відбуваються швидко (з постійним часом). Зазвичай, коли ми говоримо про Список, ми говоримо про 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() Розширює список, вставляючи новий елемент у задану позицію, і створює об’єкт на місці на початку списку, потенційно покращуючи продуктивність, уникаючи операції копіювання

Пам'ятайте про контейнер списку

  • Зазвичай це реалізується за допомогою динамічного двозв’язаного списку з обходом в обох напрямках.
  • Швидша операція вставки та видалення порівняно з масивами та векторами.
  • Він забезпечує лише послідовний доступ. Довільний доступ до будь-якого середнього елемента неможливий
  • Він визначений як шаблон, тому може зберігати будь-який тип даних.
  • Він працює як несортований список, що означає, що за замовчуванням порядок списку не зберігається. Однак існують методи сортування.