uninitialized_fill_n
Copia los objetos del valor especificado del número especificado de elementos en un rango de destino sin inicializar.
template<class FwdIt, class Size, class Type>
void uninitialized_fill_n(
ForwardIterator _First,
Size _Count,
const Type& _Val
);
Parámetros
_First
Un iterador hacia delante que dirige el primer elemento del intervalo de destino que se iniciará._Count
el número de elementos que se inicializarán._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 ( 0 < count-- )
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.
uninitialized_fill_n tiene dos formularios relacionados:
Para obtener información sobre cómo estas funciones se comportan, vea Iteradores comprobados.
Ejemplo
// memory_uninit_fill_n.cpp
// compile with: /EHsc /W3
#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 ( 60 );
Integer* Array = ( Integer* ) malloc( N * sizeof( int ) );
uninitialized_fill_n( Array, N, val ); // C4996
int i;
cout << "The uninitialized Array contains: ";
for ( i = 0 ; i < N; i++ )
cout << Array [ i ].get( ) << " ";
}
Output
The uninitialized Array contains: 60 60 60 60 60 60 60 60 60 60
Requisitos
encabezado: <memoria>
espacio de nombres: std