Condividi tramite


uninitialized_fill

Copia gli oggetti di un valore specificato in un intervallo di destinazione non inizializzato.

template<class ForwardIterator, class Type> 
   void uninitialized_fill( 
      ForwardIterator _First,  
      ForwardIterator _Last, 
      const Type& _Val 
   );

Parametri

  • _First
    Un iteratore avanti destinato al primo elemento nell'intervallo di destinazione che deve essere avviato.

  • _Last
    Un iteratore avanti destinato all'ultimo elemento nell'intervallo di destinazione che deve essere avviato.

  • _Val
    Il valore da utilizzare per inizializzare l'intervallo di destinazione.

Note

Questo algoritmo consente la separazione di allocazione della memoria dalla costruzione di un oggetto.

La funzione di modello esegue effettivamente:

while ( _First!= _Last )
   new ( (void *)&*_First ++)
      iterator_traits<ForwardIterator>::value_type ( _Val );

a meno che il codice genera un'eccezione. In tal caso, tutti gli oggetti creati vengono eliminate e l'eccezione viene generata di nuovo.

Esempio

// 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;
}
  

Requisiti

Header: <memory>

Spazio dei nomi: std