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