Listele sunt secvențe containere care permit alocarea de memorie non-contigue. În comparație cu vectorul, lista are parcurgere lentă, dar odată ce o poziție a fost găsită, inserarea și ștergerea sunt rapide (timp constant). În mod normal, când spunem o Listă, vorbim despre a listă dublu legată . Pentru implementarea unei liste cu legături unice, folosim a forward_list .
std::list este clasa containerului Listă. Este o parte a bibliotecii standard de șabloane (STL) C++ și este definită în interior fișier antet.
Sintaxă:
std::list name_of_list;>
Exemplu:
C++
ce este desktop ini
// 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;> }> |
diferenta de data excel
>
>Ieșire
12 45 8 6>
În exemplul de mai sus, am creat un obiect std::list numit gqlist și l-a inițializat folosind o listă de inițializare. Putem inițializa obiectele std::list folosind multe moduri diferite menționate Aici.
Câteva operații de bază pe std::list
- față() – Returnează valoarea primului element din listă.
- înapoi() – Returnează valoarea ultimului element din listă.
- push_front() – Adaugă un nou element „g” la începutul listei.
- împinge înapoi() – Adaugă un nou element „g” la sfârșitul listei.
- pop_front() – Îndepărtează primul element al listei și reduce dimensiunea listei cu 1.
- pop_back() – Îndepărtează ultimul element al listei și reduce dimensiunea listei cu 1.
- introduce() – Inserează elemente noi în listă înaintea elementului într-o poziție specificată.
- mărimea() – Returnează numărul de elemente din listă.
- ÎNCEPE() – Funcția begin() returnează un iterator care indică primul element al listei.
- Sfârşit() – Funcția end() returnează un iterator care indică ultimul element teoretic care urmează ultimul element.
Exemplul de mai jos demonstrează utilizarea generală a containerelor de listă și funcțiile lor de bază în C++.
Exemplu:
C++
valoare șir de
// 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>>::iterator 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;> }> |
>
>Ieșire
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>
Exemplul de mai sus demonstrează doar utilizarea generală a std::list și funcțiile sale membre. Tabelul de mai jos oferă toate funcțiile membre ale clasei std::list și link-uri către explicația detaliată a acestora.
std::list Funcții membre
| Funcții exemplu de nume de utilizator | Definiție |
|---|---|
| față() | Returnează valoarea primului element din listă. |
| înapoi() | Returnează valoarea ultimului element din listă. |
| push_front(g) | Adaugă un nou element „g” la începutul listei. |
| push_back(g) | Adaugă un nou element „g” la sfârșitul listei. |
| pop_front() | Îndepărtează primul element al listei și reduce dimensiunea listei cu 1. |
| pop_back() | Îndepărtează ultimul element al listei și reduce dimensiunea listei cu 1. |
| list::begin() | Funcția begin() returnează un iterator care indică primul element al listei. |
| list::end() | Funcția end() returnează un iterator care indică ultimul element teoretic care urmează ultimul element. |
| listă rbegin() și rend() | rbegin() returnează un iterator invers care indică ultimul element al listei. rend() returnează un iterator invers care indică poziția înainte de începutul listei. |
| listă cbegin() și cend() | cbegin() returnează un iterator constant cu acces aleatoriu care indică începutul listei. cend() returnează un iterator constant cu acces aleatoriu care indică la sfârșitul listei. |
| listă crbegin() și crend() | crbegin() returnează un iterator invers constant care indică ultimul element al listei, adică începutul inversat al containerului. crend() returnează un iterator invers constant care indică elementul teoretic care precede primul element din listă, adică capătul invers al listei. |
| gol() | Returnează dacă lista este goală (1) sau nu (0). |
| introduce() | Inserează elemente noi în listă înaintea elementului într-o poziție specificată. |
| şterge() | Îndepărtează un singur element sau o serie de elemente din listă. |
| atribui() | Atribuie elemente noi listei prin înlocuirea elementelor curente și redimensionarea listei. |
| elimina() | Elimină toate elementele din listă, care sunt egale cu un element dat. |
| list::remove_if() | Folosit pentru a elimina toate valorile din listă care corespund adevărate predicatului sau condiției date ca parametru funcției. |
| verso() | Inversează lista. |
| mărimea() | Returnează numărul de elemente din listă. |
| redimensiona lista() | Folosit pentru a redimensiona un container de listă. |
| fel() | Sortează lista în ordine crescătoare. |
| list max_size() | Returnează numărul maxim de elemente pe care un container de listă poate conține. |
| listă unică() | Elimină toate elementele consecutive duplicate din listă. |
| list::emplace_front() și list::emplace_back() | Funcția .emplace_front() este folosită pentru a insera un nou element în containerul listei și construiește obiectul la locul său la începutul listei. . Funcția emplace_back() este utilizată pentru a insera un nou element în containerul listei și construiește obiectul la locul său la sfârșitul listei. |
| list::clear() | Funcția clear() este folosită pentru a elimina toate elementele containerului listă, făcând astfel dimensiunea 0. |
| list::operator= | Acest operator este folosit pentru a atribui conținut nou containerului prin înlocuirea conținutului existent. |
| list::swap() | Această funcție este folosită pentru a schimba conținutul unei liste cu o altă listă. |
| list splice() | Folosit pentru a transfera elemente dintr-o listă în alta. |
| list merge() | Îmbină două liste sortate într-una singură. |
| list emplace() | Extinde lista prin inserarea unui nou element la o anumită poziție și construiește obiectul la locul său la începutul listei, îmbunătățind potențial performanța prin evitarea operației de copiere |
Puncte de reținut despre List Container
- În general, este implementat folosind o listă dinamică dublu legată cu traversare în ambele direcții.
- Operație de inserare și ștergere mai rapidă în comparație cu matrice și vectori.
- Oferă doar acces secvenţial. Accesul aleatoriu la niciun element din mijloc nu este posibil
- Este definit ca un șablon, astfel încât este capabil să dețină orice tip de date.
- Funcționează ca o listă nesortată, ceea ce implică faptul că în mod implicit, ordinea listei nu este păstrată. Cu toate acestea, există tehnici de sortare.