Namespaces
Variants

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

From cppreference.net

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

Reemplaza el contenido del contenedor.

1) Reemplaza el contenido con count copias del valor value .
2) Reemplaza el contenido con copias de aquellos en el rango [ first , last ) .

Esta sobrecarga tiene el mismo efecto que la sobrecarga (1) si InputIt es un tipo integral.

(until C++11)

Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt satisface los requisitos de LegacyInputIterator .

(since C++11)
Si first o last es un iterador que apunta a * this , el comportamiento es indefinido.
3) Reemplaza el contenido con los elementos de ilist .

Todos los iteradores, punteros y referencias a los elementos del contenedor quedan invalidados.

Contenidos

Parámetros

count - el nuevo tamaño del contenedor
value - el valor para inicializar los elementos del contenedor
first, last - el par de iteradores que define el rango fuente de elementos a copiar
ilist - std::initializer_list desde el cual copiar los valores

Complejidad

1) Lineal en count .
2) Lineal en la distancia entre first y last .
3) Lineal en ilist. size ( ) .

Ejemplo

El siguiente código utiliza assign para agregar varios caracteres a una std:: list < char > :

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

Salida:

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

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 320 C++98 la operación de reemplazo debía implementarse como
eliminar todos los elementos existentes seguido de insertar los elementos dados
eliminó el
requisito

Véase también

asigna un rango de valores al contenedor
(función miembro pública)
asigna valores al contenedor
(función miembro pública)