Condividi tramite


uninitialized_fill_n

Copia gli oggetti di un valore specificato il numero specificato di elementi in un intervallo di destinazione non inizializzate.

template<class FwdIt, class Size, class Type>
   void uninitialized_fill_n(
      ForwardIterator _First, 
      Size _Count,
      const Type& _Val
   );

Parametri

  • _First
    Un iteratore avanti destinato al primo elemento nell'intervallo di destinazione da avviare.

  • _Count
    Il numero di elementi da inizializzare.

  • _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 ( 0 < count-- )
   new ( ( void * )&*_First ++ )
      iterator_traits<ForwardIterator>::value_type( _Val );

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

uninitialized_fill_n dispone di due form correlati:

Per informazioni su come queste funzioni si comportano, vedere Iteratori verificati.

Esempio

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

Requisiti

intestazione: <memory>

Spazio dei nomi: deviazione standard