logo

Liste dans la bibliothèque de modèles standard C++ (STL)

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'alphabet
Sortir

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.