Namespaces
Variants

std::forward_list<T,Allocator>:: assign

From cppreference.net

void assign ( size_type count, const T & value ) ;
(1) (depuis C++11)
(constexpr depuis C++26)
template < class InputIt >
void assign ( InputIt first, InputIt last ) ;
(2) (depuis C++11)
(constexpr depuis C++26)
void assign ( std:: initializer_list < T > ilist ) ;
(3) (depuis C++11)
(constexpr depuis C++26)

Remplace le contenu du conteneur.

1) Remplace le contenu par count copies de la valeur value .
2) Remplace le contenu par des copies de ceux dans l'intervalle [ first , last ) .

Cette surcharge a le même effet que la surcharge (1) si InputIt est un type entier.

(jusqu'en C++11)

Cette surcharge participe à la résolution de surcharge uniquement si InputIt satisfait aux exigences de LegacyInputIterator .

(depuis C++11)
Si first ou last est un itérateur pointant vers * this , le comportement est indéfini.
3) Remplace le contenu par les éléments de ilist .

Tous les itérateurs, pointeurs et références vers les éléments du conteneur sont invalidés.

Table des matières

Paramètres

count - la nouvelle taille du conteneur
value - la valeur pour initialiser les éléments du conteneur
first, last - la paire d'itérateurs définissant la plage source des éléments à copier
ilist - std::initializer_list depuis laquelle copier les valeurs

Complexité

1) Linéaire en count .
2) Linéaire en fonction de la distance entre first et last .
3) Linéaire en ilist. size ( ) .

Exemple

Le code suivant utilise assign pour ajouter plusieurs caractères à une std:: forward_list < char > :

#include <forward_list>
#include <iostream>
#include <string>
int main()
{
    std::forward_list<char> characters;
    auto print_forward_list = [&]()
    {
        for (char c : characters)
            std::cout << c << ' ';
        std::cout << '\n';
    };
    characters.assign(5, 'a');
    print_forward_list();
    const std::string extra(6, 'b');
    characters.assign(extra.begin(), extra.end());
    print_forward_list();
    characters.assign({'C', '+', '+', '1', '1'});
    print_forward_list();
}

Sortie :

a a a a a
b b b b b b
C + + 1 1

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2209 C++11 l'opération de remplacement devait être implémentée comme
une suppression de tous les éléments existants suivie d'une insertion des éléments donnés
supprimé l'
exigence

Voir aussi

assigne une plage de valeurs au conteneur
(fonction membre publique)
assigne des valeurs au conteneur
(fonction membre publique)