Les listes sont des séquences conteneurs qui permettent une allocation de mémoire non contiguë. Par rapport au vecteur, la liste a un parcours lent, mais une fois qu'une position a été trouvée, l'insertion et la suppression sont rapides (temps constant). Normalement, quand on dit une Liste, on parle d'un liste doublement chaînée . Pour implémenter une liste à chaînage unique, nous utilisons un liste_avant .
std :: liste est la classe du conteneur List. Il fait partie de la bibliothèque de modèles standard C++ (STL) et est défini à l'intérieur En tête de fichier.
Syntaxe:
std::list name_of_list;>
Exemple:
C++
expression de régression en java
// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>liste gq{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }> |
>
>
les chiffres de l'alphabetSortir
12 45 8 6>
Dans l'exemple ci-dessus, nous avons créé un objet std::list nommé liste gq et je l'ai initialisé à l'aide d'un initializer_list. Nous pouvons initialiser les objets std :: list de différentes manières mentionnées ici.
Quelques opérations de base sur std :: list
- devant() – Renvoie la valeur du premier élément de la liste.
- dos() – Renvoie la valeur du dernier élément de la liste.
- push_front() – Ajoute un nouvel élément « g » au début de la liste.
- repousser() – Ajoute un nouvel élément « g » à la fin de la liste.
- pop_front() – Supprime le premier élément de la liste et réduit la taille de la liste de 1.
- pop_back() – Supprime le dernier élément de la liste et réduit la taille de la liste de 1.
- insérer() – Insère de nouveaux éléments dans la liste avant l'élément à une position spécifiée.
- taille() – Renvoie le nombre d'éléments dans la liste.
- commencer() – La fonction start() renvoie un itérateur pointant vers le premier élément de la liste.
- fin() – La fonction end() renvoie un itérateur pointant vers le dernier élément théorique qui suit le dernier élément.
L'exemple ci-dessous montre l'utilisation générale des conteneurs de liste et de leurs fonctions de base en C++.
Exemple:
C++
Natasha Dalal
// 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érateur;> >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;> }> |
>
>Sortir
10 sur 40
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 ci-dessus démontre uniquement l'utilisation générale de std::list et de ses fonctions membres. Le tableau ci-dessous fournit toutes les fonctions membres de la classe std::list et des liens vers leur explication détaillée.
std :: list Fonctions membres
| Les fonctions | Définition |
|---|---|
| devant() | Renvoie la valeur du premier élément de la liste. |
| dos() | Renvoie la valeur du dernier élément de la liste. |
| push_front(g) | Ajoute un nouvel élément « g » au début de la liste. |
| push_back(g) | Ajoute un nouvel élément « g » à la fin de la liste. |
| pop_front() | Supprime le premier élément de la liste et réduit la taille de la liste de 1. |
| pop_back() | Supprime le dernier élément de la liste et réduit la taille de la liste de 1. |
| liste :: début () | La fonction start() renvoie un itérateur pointant vers le premier élément de la liste. |
| liste :: fin () | La fonction end() renvoie un itérateur pointant vers le dernier élément théorique qui suit le dernier élément. |
| lister rbegin() et rend() | rbegin() renvoie un itérateur inverse qui pointe vers le dernier élément de la liste. rend() renvoie un itérateur inverse qui pointe vers la position avant le début de la liste. |
| lister cbegin() et cend() | cbegin() renvoie un itérateur à accès aléatoire constant qui pointe vers le début de la liste. cend() renvoie un itérateur à accès aléatoire constant qui pointe vers la fin de la liste. |
| lister crbegin() et crend() | crbegin() renvoie un itérateur inverse constant qui pointe vers le dernier élément de la liste, c'est-à-dire le début inversé du conteneur. crend() renvoie un itérateur inverse constant qui pointe vers l'élément théorique précédant le premier élément de la liste, c'est-à-dire la fin inverse de la liste. |
| vide() | Renvoie si la liste est vide (1) ou non (0). |
| insérer() | Insère de nouveaux éléments dans la liste avant l'élément à une position spécifiée. |
| effacer() | Supprime un seul élément ou une plage d'éléments de la liste. |
| attribuer() | Attribue de nouveaux éléments à la liste en remplaçant les éléments actuels et en redimensionnant la liste. |
| retirer() | Supprime tous les éléments de la liste qui sont égaux à un élément donné. |
| liste ::remove_if() | Utilisé pour supprimer de la liste toutes les valeurs qui correspondent à vrai au prédicat ou à la condition donnée en paramètre à la fonction. |
| inverse() | Inverse la liste. |
| taille() | Renvoie le nombre d'éléments dans la liste. |
| redimensionner la liste() | Utilisé pour redimensionner un conteneur de liste. |
| trier() | Trie la liste par ordre croissant. |
| liste max_size() | Renvoie le nombre maximum d'éléments qu'un conteneur de liste peut contenir. |
| liste unique() | Supprime tous les éléments consécutifs en double de la liste. |
| list::emplace_front() et list::emplace_back() | La fonction .emplace_front() est utilisée pour insérer un nouvel élément dans le conteneur de liste et construit l'objet sur place au début de la liste. . La fonction emplace_back() est utilisée pour insérer un nouvel élément dans le conteneur de liste et construit l'objet sur place à la fin de la liste. |
| liste ::clear() | La fonction clear() est utilisée pour supprimer tous les éléments du conteneur de liste, lui donnant ainsi une taille 0. |
| liste :: opérateur = | Cet opérateur est utilisé pour attribuer un nouveau contenu au conteneur en remplaçant le contenu existant. |
| liste :: échange () | Cette fonction est utilisée pour échanger le contenu d'une liste avec une autre liste. |
| épissure de liste() | Utilisé pour transférer des éléments d'une liste à une autre. |
| fusion de liste() | Fusionne deux listes triées en une seule. |
| liste emplace() | Étend la liste en insérant un nouvel élément à une position donnée et construit l'objet sur place au début de la liste, améliorant potentiellement les performances en évitant une opération de copie |
Points à retenir sur le conteneur de liste
- Il est généralement implémenté à l’aide d’une liste dynamique doublement chaînée avec parcours dans les deux sens.
- Opération d'insertion et de suppression plus rapide par rapport aux tableaux et aux vecteurs.
- Il fournit uniquement un accès séquentiel. L'accès aléatoire à un élément intermédiaire n'est pas possible
- Il est défini comme un modèle et peut donc contenir n'importe quel type de données.
- Il fonctionne comme le ferait une liste non triée, ce qui implique que par défaut, l’ordre de la liste n’est pas conservé. Il existe cependant des techniques de tri.