Conteneurs C++<forward_list>
Dans la bibliothèque standard C++<forward_list>Est un conteneur qui fournit une structure de données de liste simplement chaînée.
avec une liste doublement chaînée (std::list) différent,std::forward_listNe prend en charge que le parcours en avant. Il convient aux scénarios qui nécessitent un parcours en avant fréquent et des opérations d'insertion/suppression. Ce qui suit concernestd::forward_listdescription détaillée :
Liste simplement chaînée:
std::forward_listEst une liste simplement chaînée, ne peut être parcourue que de l'avant vers l'arrière, pas en sens inverse.- En raison de sa structure de liste simplement chaînée, les opérations d'insertion et de suppression sont très efficaces lorsque la position est connue (complexité O(1)).
Faible surcoût mémoire:
- et
std::listEn comparaison,std::forward_listNe nécessite qu’un pointeur vers le nœud suivant, ce qui économise de la mémoire.
ne prend pas en charge l’accès aléatoire:
- Ne permet pas d’accéder aux éléments par index, impossible d’utiliser
operator[]ouatla méthode, on ne peut y accéder que via des itérateurs.
Syntaxe
std::forward_listEst une classe modèle de la bibliothèque standard C++, définie dans<forward_list>fichier d’en-tête. Elle utilise des paramètres de modèleTpour spécifier le type des éléments stockés dans la liste.
Les suivantes sontstd::forward_listsyntaxe de base :
#include <forward_list> std::forward_list<T> list;
Constructeur
std::forward_listFournit plusieurs constructeurs, notamment :
- Constructeur par défaut : crée une liste vide
forward_list。 - Constructeur avec valeurs initiales : crée un [container] contenant les valeurs initiales données.
forward_list。 - Constructeur à partir d'une plage : crée un [conteneur] contenant les éléments de la plage spécifiée.
forward_list。
fonctions membres couramment utilisées
void push_front(const T& value): Insère un élément au début de la liste.void pop_front(): Supprime l'élément au début de la liste.iterator before_begin()Renvoie un itérateur pointant avant le début de la liste.iterator begin(): Renvoie un itérateur pointant vers le début de la liste.iterator end(): Renvoie un itérateur pointant vers la fin de la liste.
Exemple
ci-dessous se trouve un exemple utilisantstd::forward_listUn exemple simple, incluant la création d'une liste, l'ajout d'éléments, le parcours de la liste et l'affichage des résultats.
Exemple
#include <forward_list>
int main() {
// créer une forward_list vide
std::forward_list<int> fl;
⟦⟧// ajouter des éléments au début de la liste
fl.push_front(10);
fl.push_front(20);
fl.push_front(30);
// parcourir la forward_list et afficher les éléments
for (auto it = fl.begin(); it != fl.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// afficher le résultat : 30 20 10
return 0;
}
Lorsque vous exécutez le code ci-dessus, vous verrez la sortie suivante :
30 20 10
std::forward_listest un conteneur utile dans la bibliothèque standard C++, particulièrement pour les scénarios qui nécessitent des insertions et suppressions fréquentes au début de la liste. Bien qu'il ne permette pas l'accès aléatoire, dans certains cas, ses avantages en termes de performance peuvent compenser cet inconvénient. J'espère que cet article aidera les débutants à mieux le comprendre et à l'utiliser.std::forward_list。