Namespaces
Variants

std:: forward_list

From cppreference.net
Défini dans l'en-tête <forward_list>
template <

class T,
class Allocator = std:: allocator < T >

> class forward_list ;
(1) (depuis C++11)
namespace pmr {

template < class T >
using forward_list = std :: forward_list < T, std:: pmr :: polymorphic_allocator < T >> ;

}
(2) (depuis C++17)

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.

std::forward_list satisfait aux exigences de Container (à l'exception de la fonction membre size et du fait que la complexité de operator== est toujours linéaire), AllocatorAwareContainer et SequenceContainer .

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.

(depuis C++26)

Table des matières

Paramètres du modèle

T - Le type des éléments.
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 .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_incomplete_container_elements 201505L (C++17) Support minimal des types incomplets
(depuis C++17)

Allocator - 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 .

Types membres

Type de membre Définition
value_type T
allocator_type Allocator
size_type Type entier non signé (généralement std::size_t )
difference_type Type entier signé (généralement std::ptrdiff_t )
reference value_type &
const_reference const value_type &
pointer std:: allocator_traits < Allocator > :: pointer
const_pointer std:: allocator_traits < Allocator > :: const_pointer
iterator LegacyForwardIterator et ConstexprIterator (depuis C++26) vers value_type
const_iterator LegacyForwardIterator et ConstexprIterator (depuis C++26) vers const value_type

Fonctions membres

construit le forward_list
(fonction membre publique)
détruit le forward_list
(fonction membre publique)
assigne des valeurs au conteneur
(fonction membre publique)
assigne des valeurs au conteneur
(fonction membre publique)
assigne une plage de valeurs au conteneur
(fonction membre publique)
retourne l'allocateur associé
(fonction membre publique)
Accès aux éléments
accéder au premier élément
(fonction membre publique)
Itérateurs
retourne un itérateur vers l'élément précédant le début
(fonction membre publique)
retourne un itérateur vers le début
(fonction membre publique)
retourne un itérateur vers la fin
(fonction membre publique)
Capacité
vérifie si le conteneur est vide
(fonction membre publique)
retourne le nombre maximum possible d'éléments
(fonction membre publique)
Modificateurs
efface le contenu
(fonction membre publique)
insère des éléments après un élément
(fonction membre publique)
construit des éléments en place après un élément
(fonction membre publique)
insère une plage d'éléments après un élément
(fonction membre publique)
efface un élément après un élément
(fonction membre publique)
insère un élément au début
(fonction membre publique)
construit un élément sur place au début
(fonction membre publique)
ajoute une plage d'éléments au début
(fonction membre publique)
supprime le premier élément
(fonction membre publique)
modifie le nombre d'éléments stockés
(fonction membre publique)
échange le contenu
(fonction membre publique)
Opérations
fusionne deux listes triées
(fonction membre publique)
transfère les éléments d'un autre forward_list
(fonction membre publique)
supprime les éléments satisfaisant des critères spécifiques
(fonction membre publique)
inverse l'ordre des éléments
(fonction membre publique)
supprime les éléments dupliqués consécutifs
(fonction membre publique)
trie les éléments
(fonction membre publique)

Fonctions non membres

(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)
spécialise l'algorithme std::swap
(modèle de fonction)
efface tous les éléments satisfaisant des critères spécifiques
(modèle de fonction)

Guides de déduction

(depuis C++17)

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Construction et insertion de plages pour les conteneurs
__cpp_lib_constexpr_forward_list 202502L (C++26) constexpr std::forward_list

Exemple

Voir aussi

liste doublement chaînée
(modèle de classe)