forward_list, classe
Décrit un objet qui contrôle une séquence de longueur variable constituée d'éléments. La séquence est stockée en tant que liste de nœuds à liaison unique, chacun contenant un membre de type Type
.
Syntaxe
template <class Type,
class Allocator = allocator<Type>>
class forward_list
Paramètres
Entrez*
Type de données d'élément à stocker dans le forward_list.
Allocator
Objet allocateur stocké qui contient des informations sur l'allocation et la désallocation de mémoire du forward_list. Ce paramètre est facultatif. La valeur par défaut est allocator<Type
>.
Notes
Un forward_list
objet alloue et libère le stockage pour la séquence qu’il contrôle par le biais d’un objet stocké d’Allocator de classe basé sur la classe d’allocator (communément appelé std::allocator)
. Pour plus d’informations, consultez Allocateurs. Un objet allocator doit avoir la même interface externe qu’un objet de type allocator
.
Remarque
L'objet allocateur stocké n'est pas copié quand l'objet conteneur est assigné.
Les itérateurs, pointeurs et références peuvent devenir non valides quand des éléments de leur séquence contrôlée sont effacés via forward_list
. Les insertions et les splices effectuées sur la séquence contrôlée ne forward_list
invalident pas les itérateurs.
Des ajouts à la séquence contrôlée peuvent être effectués par des appels à forward_list::insert_after, qui est la seule fonction membre qui appelle le constructeur Type(const T&)
. forward_list
peut également appeler des constructeurs de déplacement. Si une telle expression lève une exception, l'objet conteneur n'insère aucun nouvel élément et relève l'exception. Par conséquent, un objet de type forward_list
est laissé dans un état connu lorsque de telles exceptions se produisent.
Membres
Constructeurs
Nom | Description |
---|---|
forward_list | Construit un objet de type forward_list . |
Typedefs
Nom | Description |
---|---|
allocator_type | Type qui représente la classe d'allocateur pour un forward_list. |
const_iterator | Type qui fournit un itérateur constant pour le forward_list. |
const_pointer | Type qui fournit un pointeur vers un élément const dans un forward_list. |
const_reference | Type qui fournit une référence constante à un élément dans le forward_list. |
difference_type | Type entier signé qui peut être utilisé pour représenter le nombre d'éléments d'un forward_list au sein d'une plage, parmi les éléments vers lesquels pointent les itérateurs. |
iterator | Type qui fournit un itérateur pour le forward_list. |
pointer | Type qui fournit un pointeur vers un élément du forward_list. |
référence | Type qui fournit une référence à un élément du forward_list. |
size_type | Type qui représente la distance non signée entre deux éléments. |
value_type | Type qui représente le type d'élément stocké dans un forward_list. |
Functions
Nom | Description |
---|---|
assign | Efface les éléments d'un forward_list et copie un nouvel ensemble d'éléments dans un forward_list cible. |
before_begin | Retourne un itérateur qui traite la position avant le premier élément dans un forward_list. |
begin | Retourne un itérateur qui traite le premier élément d'un forward_list. |
cbefore_begin | Retourne un itérateur const qui traite la position avant le premier élément dans un forward_list. |
cbegin | Retourne un itérateur const qui traite le premier élément d'un forward_list. |
cend | Retourne un itérateur const qui traite l'emplacement suivant le dernier élément d'un forward_list. |
clear | Efface tous les éléments d'un forward_list. |
emplace_after | Construit par déplacement un nouvel élément après la position spécifiée. |
emplace_front | Ajoute un élément construit sur place au début de la liste. |
empty | Teste si un forward_list est vide. |
end | Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un forward_list. |
erase_after | Supprime les éléments du forward_list après une position spécifiée. |
front | Retourne une référence au premier élément d'un forward_list. |
get_allocator | Retourne une copie de l'objet allocateur utilisé pour construire un forward_list. |
insert_after | Ajoute des éléments au forward_list après une position spécifiée. |
max_size | Retourne la longueur maximale d'un forward_list. |
merge | Supprime les éléments de la liste d'arguments, les insère dans le forward_list cible, puis classe le nouvel ensemble combiné d'éléments dans l'ordre croissant ou dans un autre ordre spécifique. |
pop_front | Supprime l'élément au début d'un forward_list. |
push_front | Ajoute un élément au début d'un forward_list. |
remove | Efface les éléments dans un forward_list qui correspond à une valeur spécifiée. |
remove_if | Efface les éléments d’un forward_list pour lequel un prédicat spécifié est satisfait. |
resize | Spécifie une nouvelle taille pour un forward_list. |
inverser | Inverse l'ordre dans lequel les éléments apparaissent dans un forward_list. |
sort | Réorganise les éléments dans l’ordre croissant ou dans un ordre spécifié par un prédicat. |
splice_after | Réassocie les liens entre les nœuds. |
swap | Échange les éléments de deux forward_list. |
unique | Supprime des éléments adjacents qui réussissent un test spécifié. |
Opérateurs
Nom | Description |
---|---|
operator= | Remplace les éléments du forward_list par une copie d'un autre forward_list. |
allocator_type
Type qui représente la classe d'allocateur pour un forward_list.
typedef Allocator allocator_type;
Notes
allocator_type
est un synonyme du paramètre de modèle Allocator.
attribuer
Efface les éléments d'un forward_list et copie un nouvel ensemble d'éléments dans un forward_list cible.
void assign(
size_type Count,
const Type& Val);
void assign(
initializer_list<Type> IList);
template <class InputIterator>
void assign(InputIterator First, InputIterator Last);
Paramètres
first
Début de la plage de remplacement.
last
Fin de la plage de remplacement.
count
Nombre d’éléments à assigner.
val
Valeur à assigner à chaque élément.
Type
Type de la valeur.
IList
Initializer_list à copier.
Notes
Si forward_list est de type entier, la première fonction membre se comporte comme assign((size_type)First, (Type)Last)
. Sinon, la première fonction membre remplace la séquence contrôlée par *this
par la séquence [ First, Last)
, qui ne doit pas chevaucher la séquence contrôlée initiale.
La deuxième fonction membre remplace la séquence contrôlée par *this
par une répétition de Count
éléments ayant la valeur Val
.
La troisième fonction membre copie les éléments d’initializer_list dans forward_list.
before_begin
Retourne un itérateur qui traite la position avant le premier élément dans un forward_list.
const_iterator before_begin() const;
iterator before_begin();
Valeur de retour
Itérateur vers l’avant qui pointe juste avant le premier élément de la séquence (ou juste avant la fin d’une séquence vide).
Notes
begin
Retourne un itérateur qui traite le premier élément d'un forward_list.
const_iterator begin() const;
iterator begin();
Valeur de retour
Itérateur vers l’avant qui pointe sur le premier élément de la séquence (ou juste après la fin d’une séquence vide).
Notes
cbefore_begin
Retourne un itérateur const qui traite la position avant le premier élément dans un forward_list.
const_iterator cbefore_begin() const;
Valeur de retour
Itérateur vers l’avant qui pointe juste avant le premier élément de la séquence (ou juste avant la fin d’une séquence vide).
Notes
cbegin
Retourne un itérateur const
qui traite le premier élément d'une plage.
const_iterator cbegin() const;
Valeur de retour
Itérateur forward const
qui pointe vers le premier élément de la plage, ou vers l'emplacement situé juste après la fin d'une plage vide (pour une plage vide : cbegin() == cend()
).
Notes
Avec la valeur de retour , les éléments de cbegin
la plage ne peuvent pas être modifiés.
Vous pouvez utiliser cette fonction membre à la place de la fonction membre begin()
afin de garantir que la valeur de retour est const_iterator
. En règle générale, il est utilisé avec le mot clé de déduction de type automatique , comme illustré dans l’exemple suivant. Dans cet exemple, Container
est supposé être un conteneur modifiable (autre que const
) de type indéfini prenant en charge begin()
et cbegin()
.
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Retourne un itérateur const
qui traite l'emplacement situé immédiatement après le dernier élément d'une plage.
const_iterator cend() const;
Valeur de retour
Itérateur forward qui pointe juste après la fin de la plage.
Notes
cend
est utilisé pour vérifier si un itérateur a dépassé la fin de la plage.
Vous pouvez utiliser cette fonction membre à la place de la fonction membre end()
afin de garantir que la valeur de retour est const_iterator
. En règle générale, il est utilisé avec le mot clé de déduction de type automatique , comme illustré dans l’exemple suivant. Dans cet exemple, Container
est supposé être un conteneur modifiable (autre que const
) de type indéfini prenant en charge end()
et cend()
.
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
La valeur retournée par cend
ne doit pas être déréférencement.
clear
Efface tous les éléments d'un forward_list.
void clear();
Notes
Cette fonction membre appelle erase_after(before_begin(), end())
.
const_iterator
Type qui fournit un itérateur constant pour le forward_list.
typedef implementation-defined const_iterator;
Notes
const_iterator
décrit un objet pouvant servir d’itérateur vers l’avant constant pour la séquence contrôlée. Il est décrit ici comme synonyme d’un type défini par l’implémentation.
const_pointer
Type qui fournit un pointeur vers un élément const
dans un forward_list.
typedef typename Allocator::const_pointer
const_pointer;
Notes
const_reference
Type qui fournit une référence constante à un élément dans le forward_list.
typedef typename Allocator::const_reference const_reference;
Notes
difference_type
Type entier signé qui peut être utilisé pour représenter le nombre d'éléments d'un forward_list au sein d'une plage, parmi les éléments vers lesquels pointent les itérateurs.
typedef typename Allocator::difference_type difference_type;
Notes
difference_type
décrit un objet pouvant représenter la différence entre les adresses de deux éléments de la séquence contrôlée.
emplace_after
Construit par déplacement un nouvel élément après la position spécifiée.
template <class T>
iterator emplace_after(const_iterator Where, Type&& val);
Paramètres
Where
Position dans la liste forward_list cible où le nouvel élément est construit.
val
Argument du constructeur.
Valeur de retour
Itérateur désignant le nouvel élément inséré.
Notes
Cette fonction membre insère un élément avec les arguments de constructeur val juste après l’élément pointé par Where dans la séquence contrôlée. Sinon, son comportement est identique à celui de forward_list::insert_after.
emplace_front
Ajoute un élément construit sur place au début de la liste.
template <class Type>
void emplace_front(Type&& val);
Paramètres
val
Élément ajouté au début de la liste forward_list.
Notes
Cette fonction membre insère un élément avec les arguments de constructeur _ val
à la fin de la séquence contrôlée.
Si une exception est levée, le conteneur n’est pas modifié et l’exception est levée de nouveau.
empty
Teste si un forward_list est vide.
bool empty() const;
Valeur de retour
true
si la liste forward_list est vide ; sinon, false
.
end
Retourne un itérateur qui traite l'emplacement suivant le dernier élément d'un forward_list.
const_iterator end() const;
iterator end();
Valeur de retour
Retourne un itérateur vers l’avant qui pointe juste après la fin de la séquence.
erase_after
Supprime les éléments du forward_list après une position spécifiée.
iterator erase_after(const_iterator Where);
iterator erase_after(const_iterator first, const_iterator last);
Paramètres
Where
Position dans la liste forward_list cible où le nouvel élément est effacé.
first
Début de la plage à effacer.
last
Fin de la plage à effacer.
Valeur de retour
Itérateur qui désigne le premier élément restant après tous les éléments supprimés, ou forward_list::end si aucun élément de ce genre n’existe.
Notes
La première fonction membre supprime l’élément de la séquence contrôlée juste après Where.
La deuxième fonction membre supprime l’élément de la séquence contrôlée dans la plage ( first, last)
(aucun point de fin n’est inclus).
L’effacement de N
éléments entraîne N
appels de destructeur. Une réallocation se produit, et les itérateurs et les références deviennent non valides pour les éléments effacés.
Les fonctions membres ne lèvent jamais d'exception.
forward_list
Construit un objet de type forward_list
.
forward_list();
explicit forward_list(const Allocator& Al);
explicit forward_list(size_type Count);
forward_list(size_type Count, const Type& Val);
forward_list(size_type Count, const Type& Val, const Allocator& Al);
forward_list(const forward_list& Right);
forward_list(const forward_list& Right, const Allocator& Al);
forward_list(forward_list&& Right);
forward_list(forward_list&& Right, const Allocator& Al);
forward_list(initializer_list<Type> IList, const Alloc& Al);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last, const Allocator& Al);
Paramètres
Al
Classe allocator à utiliser avec cet objet.
Count
Nombre d'éléments dans la liste construite.
Val
Valeur des éléments contenus dans la liste construite.
Right
Liste dont la liste construite doit être une copie.
First
Position du premier élément de la plage d'éléments à copier.
Dernière
Position du premier élément au-delà de la plage d'éléments à copier.
IList
Initializer_list à copier.
Notes
Tous les constructeurs stockent un allocator et initialisent la séquence contrôlée. L’objet allocator est l’argument Al, le cas échéant. Pour le constructeur de copie, c’est right.get_allocator()
. Dans le cas contraire, il prend la valeur Allocator()
.
Les deux premiers constructeurs spécifient une séquence contrôlée initiale vide.
Le troisième constructeur spécifie une répétition des éléments Count de valeur Type()
.
Les quatrième et cinquième constructeurs spécifient une répétition des éléments Count de valeur Val.
Le sixième constructeur spécifie une copie de la séquence contrôlée par Right. Si InputIterator
est un type entier, les deux constructeurs suivants spécifient une répétition des (size_type)First
éléments ayant la valeur (Type)Last
. Sinon, les deux constructeurs suivants spécifient la séquence [First, Last)
.
Les neuvième et dixième constructeurs sont les mêmes que le sixième, mais avec une référence rvalue.
Le dernier constructeur spécifie la séquence contrôlée initiale avec un objet de classe initializer_list<Type>
.
front
Retourne une référence au premier élément d'un forward_list.
reference front();
const_reference front() const;
Valeur de retour
Référence au premier élément de la séquence contrôlée, qui ne doit pas être vide.
get_allocator
Retourne une copie de l'objet allocateur utilisé pour construire un forward_list.
allocator_type get_allocator() const;
Valeur de retour
Objet allocateur stocké.
insert_after
Ajoute des éléments au forward_list après une position spécifiée.
iterator insert_after(const_iterator Where, const Type& Val);
void insert_after(const_iterator Where, size_type Count, const Type& Val);
void insert_after(const iterator Where, initializer_list<Type> IList);
iterator insert_after(const_iterator Where, Type&& Val);
template <class InputIterator>
void insert_after(const_iterator Where, InputIterator First, InputIterator Last);
Paramètres
Where
Position dans la liste forward_list cible où le premier élément est inséré.
Count
Nombre d’éléments à insérer.
First
Début de la plage d’insertion.
Dernière
Fin de la plage d’insertion.
Val
Élément ajouté à la liste forward_list.
IList
Initializer_list à insérer.
Valeur de retour
Itérateur qui désigne le nouvel élément inséré (première et deuxième fonctions membres uniquement).
Notes
Chacune des fonctions membres insère, juste après l’élément pointé par Where dans la séquence contrôlée, une séquence spécifiée par les opérandes restants.
La première fonction membre insère un élément qui a la valeur Val et retourne un itérateur qui désigne l’élément nouvellement inséré.
La deuxième fonction membre insère une répétition des éléments Count de valeur Val.
Si InputIterator
est un type entier, la troisième fonction membre se comporte comme insert(it, (size_type)First, (Type)Last)
. Sinon, elle insère la séquence [First, Last)
, qui ne doit pas chevaucher la séquence contrôlée initiale.
La quatrième fonction membre insère la séquence spécifiée par un objet de classe initializer_list<Type>
.
La dernière fonction membre est la même que la première, mais avec une référence rvalue.
L’insertion de N
éléments entraîne N
appels de constructeur. Une réallocation se produit, mais aucun itérateur ou référence ne devient non valide.
Si une exception est levée pendant l’insertion d’un ou plusieurs éléments, le conteneur n’est pas modifié et l’exception est levée de nouveau.
iterator
Type qui fournit un itérateur pour le forward_list.
typedef implementation-defined iterator;
Notes
iterator
décrit un objet pouvant servir d’itérateur vers l’avant pour la séquence contrôlée. Il est décrit ici comme synonyme d’un type défini par l’implémentation.
max_size
Retourne la longueur maximale d'un forward_list.
size_type max_size() const;
Valeur de retour
Longueur de la séquence la plus longue que l’objet peut contrôler.
Notes
merge
Combine les deux séquences triées en une seule séquence triée en temps linéaire. Supprime les éléments de la liste d’arguments et les insère dans ce forward_list
. Les deux listes doivent être triées par le même objet de fonction de comparaison avant l’appel à merge
. La liste combinée est triée par l’objet de fonction de comparaison.
void merge(forward_list& right);
template <class Predicate>
void merge(forward_list& right, Predicate comp);
Paramètres
right
Liste forward_list à partir de laquelle effectuer la fusion.
comp
Objet de fonction de comparaison utilisé pour trier les éléments.
Notes
forward_list::merge
supprime les éléments du forward_list
right
, et les insère dans ce forward_list
. Les deux séquences doivent être triées par le même prédicat, décrit ci-dessous. La séquence combinée est également ordonnée par cet objet de fonction de comparaison.
Pour les itérateurs Pi
et Pj
désignant des éléments aux positions i
et j
, la première fonction membre impose l’ordre !(*Pj < *Pi)
chaque fois que i < j
. (Les éléments sont triés dans l’ordre ascending
.) La deuxième fonction membre impose l’ordre ! comp(*Pj, *Pi)
à chaque fois i < j
que .
Aucune paire d’éléments dans la séquence contrôlée d’origine n’est inversée dans la séquence contrôlée obtenue. Si deux éléments de la séquence contrôlée obtenue sont égaux ( !(*Pi < *Pj) && !(*Pj < *Pi)
), un élément de la séquence contrôlée d’origine apparaît avant un élément de la séquence contrôlée par right
.
Une exception se produit uniquement si comp
lève une exception. Dans ce cas, la séquence contrôlée conserve un ordre non spécifié et l’exception est levée de nouveau.
opérateur =
Remplace les éléments du forward_list par une copie d'un autre forward_list.
forward_list& operator=(const forward_list& right);
forward_list& operator=(initializer_list<Type> IList);
forward_list& operator=(forward_list&& right);
Paramètres
right
Liste forward_list copiée dans la liste forward_list.
IList
Liste d’initialiseurs entre accolades, qui se comporte comme une séquence d’éléments de type Type
.
Notes
Le premier opérateur membre remplace la séquence contrôlée par une copie de la séquence contrôlée par le droit.
Le deuxième opérateur membre remplace la séquence contrôlée à partir d’un objet de classe initializer_list<Type>
.
Le troisième opérateur membre est le même que le premier, mais avec une référence rvalue.
pointer
Type qui fournit un pointeur vers un élément du forward_list.
typedef typename Allocator::pointer pointer;
pop_front
Supprime l'élément au début d'un forward_list.
void pop_front();
Notes
Le premier élément de la liste forward_list ne doit pas être vide.
La fonction membre ne lève jamais d’exception.
push_front
Ajoute un élément au début d'un forward_list.
void push_front(const Type& val);
void push_front(Type&& val);
Paramètres
val
Élément ajouté au début de la liste forward_list.
Notes
Si une exception est levée, le conteneur n’est pas modifié et l’exception est levée de nouveau.
référence
Type qui fournit une référence à un élément du forward_list.
typedef typename Allocator::reference reference;
remove
Efface les éléments dans un forward_list qui correspond à une valeur spécifiée.
void remove(const Type& val);
Paramètres
val
Valeur qui, si elle est contenue dans un élément, entraîne la suppression de cet élément de la liste.
Notes
La fonction membre supprime de la séquence contrôlée tous les éléments désignés par l’itérateur P
pour lesquels *P == val
.
La fonction membre ne lève jamais d’exception.
remove_if
Efface les éléments d’un forward_list pour lequel un prédicat spécifié est satisfait.
template <class Predicate>
void remove_if(Predicate pred);
Paramètres
Pred
Prédicat unaire qui, s’il est satisfait par un élément, entraîne la suppression de cet élément de la liste.
Notes
La fonction membre supprime de la séquence contrôlée tous les éléments désignés par l’itérateur P
pour lesquels pred(*P)
est true.
Une exception se produit uniquement si elle lève une exception. Dans ce cas, la séquence contrôlée conserve un état non spécifié et l’exception est levée de nouveau.
resize
Spécifie une nouvelle taille pour un forward_list.
void resize(size_type _Newsize);
void resize(size_type _Newsize, const Type& val);
Paramètres
_Newsize
Nombre d’éléments dans la liste forward_list redimensionnée.
val
Valeur à utiliser pour le remplissage.
Notes
Les fonctions membres garantissent tous deux que le nombre d’éléments de la liste est désormais _Newsize. Si elle doit rendre la séquence contrôlée plus longue, la première fonction membre ajoute des éléments avec valeur Type()
, tandis que la deuxième fonction membre ajoute des éléments avec valeur val. Pour raccourcir la séquence contrôlée, les deux fonctions membres appellent erase_after(begin() + _Newsize - 1, end())
.
inverser
Inverse l'ordre dans lequel les éléments apparaissent dans un forward_list.
void reverse();
size_type
Type qui représente la distance non signée entre deux éléments.
typedef typename Allocator::size_type size_type;
Notes
Le type d'entier non signé décrit un objet qui peut représenter la longueur de n'importe quelle séquence contrôlée.
sort
Réorganise les éléments dans l’ordre croissant ou dans un ordre spécifié par un prédicat.
void sort();
template <class Predicate>
void sort(Predicate pred);
Paramètres
Pred
Prédicat de tri.
Notes
Les deux fonctions membres ordonnent les éléments dans la séquence contrôlée selon un prédicat, décrit ci-dessous.
Pour les itérateurs Pi
et Pj
désignant des éléments aux positions i
et j
, la première fonction membre impose l’ordre !(*Pj < *Pi)
chaque fois que i < j
. (Les éléments sont triés dans l’ordre ascending
.) La fonction de modèle membre impose l’ordre ! pred(*Pj, *Pi)
à chaque fois i < j
que . Aucune paire d’éléments ordonnée dans la séquence contrôlée d’origine n’est inversée dans la séquence contrôlée obtenue. (Le tri est stable.)
Une exception se produit uniquement si elle lève une exception. Dans ce cas, la séquence contrôlée conserve un ordre non spécifié et l’exception est levée de nouveau.
splice_after
Supprime des éléments d'une liste forward_list source et les insère dans une liste forward_list de destination.
// insert the entire source forward_list
void splice_after(const_iterator Where, forward_list& Source);
void splice_after(const_iterator Where, forward_list&& Source);
// insert one element of the source forward_list
void splice_after(const_iterator Where, forward_list& Source, const_iterator Iter);
void splice_after(const_iterator Where, forward_list&& Source, const_iterator Iter);
// insert a range of elements from the source forward_list
void splice_after(
const_iterator Where,
forward_list& Source,
const_iterator First,
const_iterator Last);
void splice_after(
const_iterator Where,
forward_list&& Source,
const_iterator First,
const_iterator Last);
Paramètres
Where
Position dans la liste forward_list de destination après laquelle l'insertion doit être effectuée.
Source
Liste forward_list source qui doit être insérée dans la liste forward_list de destination.
Iter
Élément à insérer à partir de la liste forward_list source.
First
Premier élément de la plage à insérer à partir de la liste forward_list source.
Dernière
Première position au-delà de la plage à insérer à partir de la liste forward_list source.
Notes
La première paire de fonctions membres insère la séquence contrôlée par source juste après l’élément de la séquence contrôlée pointée par Where. Elle supprime également tous les éléments de la source. ( &Source
ne doit pas être égal à this
.)
La deuxième paire de fonctions membres supprime l’élément juste après Iter dans la séquence contrôlée par source et l’insère juste après l’élément de la séquence contrôlée pointée par Where. (Si Where == Iter || Where == ++Iter
, aucune modification ne se produit.)
La troisième paire de fonctions membres (splice ranged) insère la sous-plage désignée par (First, Last)
la séquence contrôlée par source juste après l’élément de la séquence contrôlée pointée vers Where. Elle supprime également la sous-plage d’origine de la séquence contrôlée par source. (Si &Source == this
, la plage (First, Last)
ne doit pas inclure l’élément pointé par Where.)
Si la méthode splice à plage insère N
éléments et que &Source != this
, un objet de classe iterator est incrémenté N
fois.
Aucun itérateur, pointeur ou référence qui désigne des éléments ajoutés n'est invalidé.
Exemple
// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
forward_list<int> c1{ 10, 11 };
forward_list<int> c2{ 20, 21, 22 };
forward_list<int> c3{ 30, 31 };
forward_list<int> c4{ 40, 41, 42, 43 };
forward_list<int>::iterator where_iter;
forward_list<int>::iterator first_iter;
forward_list<int>::iterator last_iter;
cout << "Beginning state of lists:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
cout << "c3 = ";
print(c3);
cout << "c4 = ";
print(c4);
where_iter = c2.begin();
++where_iter; // start at second element
c2.splice_after(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice_after(where_iter, c3, first_iter);
cout << "After splicing the first element of c3 into c2:" << endl;
cout << "c3 = ";
print(c3);
cout << "c2 = ";
print(c2);
first_iter = c4.begin();
last_iter = c4.end();
// set up to get the middle elements
++first_iter;
c2.splice_after(where_iter, c4, first_iter, last_iter);
cout << "After splicing a range of c4 into c2:" << endl;
cout << "c4 = ";
print(c4);
cout << "c2 = ";
print(c2);
}
Beginning state of lists:c1 = (10) (11)c2 = (20) (21) (22)c3 = (30) (31)c4 = (40) (41) (42) (43)After splicing c1 into c2:c1 =c2 = (20) (21) (10) (11) (22)After splicing the first element of c3 into c2:c3 = (30)c2 = (20) (21) (31) (10) (11) (22)After splicing a range of c4 into c2:c4 = (40) (41)c2 = (20) (21) (42) (43) (31) (10) (11) (22)
swap
Échange les éléments de deux forward_list.
void swap(forward_list& right);
Paramètres
right
Liste forward_list qui fournit les éléments à échanger.
Notes
La fonction membre échange les séquences contrôlées entre *this
et droite. Si get_allocator() == right.get_allocator()
, elle le fait en temps constant, ne lève aucune exception et n’invalide aucune référence, pointeur ou itérateur qui désigne des éléments dans les deux séquences contrôlées. Sinon, il effectue des affectations d’éléments et des appels de constructeur proportionnels au nombre d’éléments dans les deux séquences contrôlées.
unique
Élimine tous les éléments sauf le premier de chaque groupe consécutif d’éléments égaux.
void unique();
template <class BinaryPredicate>
void unique(BinaryPredicate comp);
Paramètres
comp
Prédicat binaire utilisé pour comparer des éléments consécutifs.
Notes
Conserve le premier de chaque élément unique et supprime le reste. Les éléments doivent être triés pour que les éléments de valeur égale soient adjacents dans la liste.
La première fonction membre supprime de la séquence contrôlée chaque élément dont la valeur est égale à celle de l’élément précédent. Pour les itérateurs Pi
et Pj
désignant des éléments aux positions i
et j
, la deuxième fonction membre supprime chaque élément pour lequel i + 1 == j && comp(*Pi, *Pj)
.
Pour une séquence contrôlée de longueur N
(> 0), le prédicat comp(*Pi, *Pj)
est évalué N - 1
à des heures.
Une exception se produit uniquement si comp
lève une exception. Dans ce cas, la séquence contrôlée conserve un état non spécifié et l’exception est levée de nouveau.
value_type
Type qui représente le type d'élément stocké dans un forward_list.
typedef typename Allocator::value_type value_type;
Notes
Le type est un synonyme du paramètre de modèle Type
.