Les llistes són seqüències contenidors que permeten l'assignació de memòria no contigua. En comparació amb el vector, la llista té un recorregut lent, però un cop s'ha trobat una posició, la inserció i la supressió són ràpides (temps constant). Normalment, quan diem una Llista, parlem d'a llista doblement enllaçada . Per implementar una llista enllaçada individualment, fem servir a llista_avançada .
std::list és la classe del contenidor List. És la part de la biblioteca de plantilles estàndard (STL) de C++ i es defineix dins fitxer de capçalera.
Sintaxi:
std::list name_of_list;>
Exemple:
C++
ordenació de selecció en java
// 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;> }> |
>
>Sortida
12 45 8 6>
A l'exemple anterior, hem creat un objecte std::list anomenat llista gq i el va inicialitzar utilitzant un initializer_list. Podem inicialitzar els objectes std::list utilitzant moltes maneres diferents esmentades aquí.
Algunes operacions bàsiques a std::list
- davant () – Retorna el valor del primer element de la llista.
- esquena() – Retorna el valor de l'últim element de la llista.
- push_front() – Afegeix un nou element 'g' al principi de la llista.
- fer retrocedir() – Afegeix un nou element 'g' al final de la llista.
- pop_front() – Elimina el primer element de la llista i redueix la mida de la llista en 1.
- pop_back() – Elimina l'últim element de la llista i redueix la mida de la llista en 1.
- inserir () – Insereix nous elements a la llista abans de l'element en una posició especificada.
- mida () – Retorna el nombre d'elements de la llista.
- començar () – La funció begin() retorna un iterador que apunta al primer element de la llista.
- final() – La funció end() retorna un iterador que apunta a l'últim element teòric que segueix l'últim element.
L'exemple següent mostra l'ús general dels contenidors de llista i les seves funcions bàsiques en C++.
Exemple:
tipus d'ordinador
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>>::iterador;> >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;> }> |
>
>Sortida
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>
L'exemple anterior només demostra l'ús general de la std::list i les seves funcions membres. La taula següent proporciona totes les funcions membres de la classe std::list i enllaços a la seva explicació detallada.
commutador c#
std::list Funcions dels membres
| Funcions | Definició |
|---|---|
| davant () | Retorna el valor del primer element de la llista. |
| esquena() | Retorna el valor de l'últim element de la llista. |
| push_front(g) | Afegeix un nou element 'g' al principi de la llista. |
| push_back (g) | Afegeix un nou element 'g' al final de la llista. |
| pop_front() | Elimina el primer element de la llista i redueix la mida de la llista en 1. |
| pop_back() | Elimina l'últim element de la llista i redueix la mida de la llista en 1. |
| llista::begin() | La funció begin() retorna un iterador que apunta al primer element de la llista. |
| llista::final() | La funció end() retorna un iterador que apunta a l'últim element teòric que segueix l'últim element. |
| llista rbegin() i rend() | rbegin() retorna un iterador invers que apunta a l'últim element de la llista. rend() retorna un iterador invers que apunta a la posició abans del començament de la llista. |
| llista cbegin() i cend() | cbegin() retorna un iterador d'accés aleatori constant que apunta al principi de la llista. cend() retorna un iterador d'accés aleatori constant que apunta al final de la llista. |
| llista crbegin() i crend() | crbegin() retorna un iterador invers constant que apunta a l'últim element de la llista, és a dir, l'inici invertit del contenidor. crend() retorna un iterador invers constant que apunta a l'element teòric que precedeix el primer element de la llista, és a dir, l'extrem invers de la llista. |
| buit() | Retorna si la llista està buida (1) o no (0). |
| inserir () | Insereix nous elements a la llista abans de l'element en una posició especificada. |
| esborra () | Elimina un sol element o un rang d'elements de la llista. |
| assignar () | Assigna elements nous a la llista substituint els elements actuals i canviant la mida de la llista. |
| eliminar () | Elimina tots els elements de la llista, que són iguals a un element donat. |
| llista::remove_if() | S'utilitza per eliminar tots els valors de la llista que corresponen veritablement al predicat o condició donat com a paràmetre a la funció. |
| revés () | Inverteix la llista. |
| mida () | Retorna el nombre d'elements de la llista. |
| redimensiona la llista () | S'utilitza per canviar la mida d'un contenidor de llista. |
| ordenar () | Ordena la llista en ordre creixent. |
| llista max_size() | Retorna el nombre màxim d'elements que pot contenir un contenidor de llista. |
| llista única () | Elimina tots els elements consecutius duplicats de la llista. |
| list::emplace_front() i list::emplace_back() | La funció .emplace_front() s'utilitza per inserir un element nou al contenidor de la llista i construeix l'objecte al principi de la llista. . La funció emplace_back() s'utilitza per inserir un element nou al contenidor de la llista i construeix l'objecte al final de la llista. |
| llista::clar() | La funció clear() s'utilitza per eliminar tots els elements del contenidor de la llista, fent-lo de mida 0. |
| llista::operador= | Aquest operador s'utilitza per assignar nous continguts al contenidor substituint el contingut existent. |
| llista::swap() | Aquesta funció s'utilitza per intercanviar el contingut d'una llista amb una altra. |
| empalmament de llista () | S'utilitza per transferir elements d'una llista a una altra. |
| llista combinar () | Combina dues llistes ordenades en una sola. |
| llista emplace() | Amplia la llista inserint un element nou en una posició determinada i construeix l'objecte al seu lloc al principi de la llista, millorant potencialment el rendiment evitant una operació de còpia. |
Punts a recordar sobre el contenidor de llista
- Generalment s'implementa mitjançant una llista dinàmica doblement enllaçada amb recorregut en ambdues direccions.
- Operació d'inserció i supressió més ràpida en comparació amb matrius i vectors.
- Només proporciona accés seqüencial. No és possible l'accés aleatori a cap element mitjà
- Es defineix com una plantilla, de manera que pot contenir qualsevol tipus de dades.
- Funciona com ho faria una llista no ordenada, la qual cosa implica que per defecte, l'ordre de la llista no es conserva. Tanmateix, hi ha tècniques per classificar.