uninitialized_fill
Copia los objetos del valor especificado en un rango de destino sin inicializar.
template<class ForwardIterator, class Type>
void uninitialized_fill(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
Parámetros
_First
Un iterador hacia delante que dirige el primer elemento del intervalo de destino que se debe iniciar._Last
Un iterador hacia delante que dirige el último elemento del intervalo de destino que se debe iniciar._Val
El valor que se utilizará para inicializar el intervalo de destino.
Comentarios
Este algoritmo permite se desacoplan de asignación de memoria de la construcción de objetos.
La función de la plantilla se ejecuta eficazmente:
while ( _First!= _Last )
new ( (void *)&*_First ++)
iterator_traits<ForwardIterator>::value_type ( _Val );
a menos que el código produce una excepción.En ese caso, se destruyen todos los objetos construidos y la excepción se reinician.
Ejemplo
// memory_uninit_fill.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
using namespace std;
class Integer { // No default constructor
public:
Integer( int x ) : val( x ) {}
int get( ) { return val; }
private:
int val;
};
int main( )
{
const int N = 10;
Integer val ( 25 );
Integer* Array = ( Integer* ) malloc( N * sizeof( int ) );
uninitialized_fill( Array, Array + N, val );
int i;
cout << "The initialized Array contains: ";
for ( i = 0 ; i < N; i++ )
{
cout << Array [ i ].get( ) << " ";
}
cout << endl;
}
Requisitos
encabezado: <memoria>
espacio de nombres: std