std::forward_list
est un conteneur qui prend en charge l'insertion et la suppression rapides d'éléments depuis n'importe où dans le conteneur. L'accès aléatoire rapide n'est pas pris en charge. Il est implémenté sous forme de liste simplement chaînée. Comparé à
std::list
ce conteneur offre un stockage plus efficace en espace mémoire lorsque l'itération bidirectionnelle n'est pas nécessaire.
L'ajout, la suppression et le déplacement des éléments dans la liste, ou entre plusieurs listes, n'invalident pas les itérateurs faisant actuellement référence à d'autres éléments de la liste. Cependant, un itérateur ou une référence se rapportant à un élément est invalidé lorsque l'élément correspondant est supprimé (via
erase_after
) de la liste.
Toutes les fonctions membres de
std::forward_list
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::forward_list
dans l'évaluation d'une expression constante.
Cependant,
std::forward_list
ne peuvent généralement pas être
constexpr
, car toute allocation dynamique de mémoire doit être libérée dans la même évaluation d'expression constante.
Les exigences imposées aux éléments dépendent des opérations effectivement réalisées sur le conteneur. Généralement, il est requis que le type d'élément soit un type complet et satisfasse aux exigences de
Erasable
, mais de nombreuses fonctions membres imposent des exigences plus strictes.
(jusqu'en C++17)
Les exigences imposées aux éléments dépendent des opérations effectivement réalisées sur le conteneur. Généralement, il est requis que le type d'élément satisfasse aux exigences de
Erasable
, mais de nombreuses fonctions membres imposent des exigences plus strictes. Ce conteneur (mais pas ses membres) peut être instancié avec un type d'élément incomplet si l'allocateur satisfait aux
exigences de complétude de l'allocateur
.
Un allocateur utilisé pour acquérir/libérer la mémoire et pour construire/détruire les éléments dans cette mémoire. Le type doit satisfaire aux exigences de
Allocator
.
Le comportement est indéfini
(jusqu'en C++20)
Le programme est mal formé
(depuis C++20)
si
Allocator::value_type
n'est pas identique à
T
.
(C++11)
(C++11)
(supprimé en C++20)
(C++11)
(supprimé en C++20)
(C++11)
(supprimé en C++20)
(C++11)
(supprimé en C++20)
(C++11)
(supprimé en C++20)
(C++20)
compare lexicographiquement les valeurs de deux
forward_list
(modèle de fonction)