Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

uninitialized_fill_n

 

Copia objetos de un valor especificado en un número especificado de elementos a un intervalo de destino sin inicializar.


template<class FwdIt, class Size, class Type>
   void uninitialized
_
fill
_
n(
      ForwardIterator 
_First
, 
      Size 
_Count
,
      const Type& 
_Val
   );

_First

Iterador hacia delante que direcciona el primer elemento del intervalo de destino que se va a iniciar.

_Count

Número de elementos que se van a inicializar.

_Val

Valor que se usará para inicializar el intervalo de destino.

Este algoritmo permite desacoplar la asignación de memoria de la construcción de objetos.

La función de plantilla ejecuta eficazmente:

while ( 0 < count-- )
   new ( ( void * )&*_First ++ )
      iterator_traits<ForwardIterator>::value_type( _Val );

a menos que el código produzca una excepción. En ese caso, se destruyen todos los objetos construidos y la vuelve a producir excepción.

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( ) <<  " ";
}

The uninitialized Array contains: 60 60 60 60 60 60 60 60 60 60 

Requisitos

Encabezado: <memory>

Espacio de nombres: std

Mostrar: